Sida 1 av 2
Enkel adc med 12f675?
Postat: 5 oktober 2013, 10:00:21
av newbadboy
Ska läsa nivån från en fototransistor som kan ligga mellan 0-400mv. Tanken är att när nivån är mer än 100mV så ska jag toggla en utgång. Thats it. Som det är nu s växlar utgången hela tiden och bryr sig eg inte direkt om värdet från fototransistorn. Jag har kopierat mesta av koden från ett gammalt projekt där det har funkat. Har samma krets och t.om samma pinkonfigurering. Jag kan inte se just nu vad jag har missat
Ingång är GPIO/AN2
Ugång är GPIO0
Kretsen drivs med 2,5V och är oxå satt som Vref. Jag har då fått att 100mv är 29hex.
Koden följer nedan.
Kod: Markera allt
#define LED GPIO.F0
unsigned int adc_rd;
int k=0;
void main() {
TRISIO=0x6;
ANSEL=0x4;
CMCON=0x7;
LED=0;
adc_rd=ADC_Read(2);
while(adc_rd > 0x29){
LED=1;
delay_ms(50);
LED=0;
delay_ms(700);
adc_rd=ADC_Read(2);
}
}
Re: enkel adc med 12f675?
Postat: 5 oktober 2013, 10:08:52
av Icecap
Klart att den gör! Du har ju ingen loop i main, alltså resetter koden konstant.
Kod: Markera allt
void main(void)
{
Initiering osv...
while(1) // <- Detta är en ändring
{
adc_rd=ADC_Read(2);
while(adc_rd > 0x29)
{
LED=1;
delay_ms(50);
LED=0;
delay_ms(700);
adc_rd=ADC_Read(2);
}
} // <- Likaså detta
}
Re: enkel adc med 12f675?
Postat: 5 oktober 2013, 10:18:53
av ecenier
Har du kanske vänt fototransistorn åt fel håll? Drn ska ju kopplas in "baklänges".
Re: enkel adc med 12f675?
Postat: 5 oktober 2013, 10:42:14
av Wedge
Icecap skrev:Klart att den gör! Du har ju ingen loop i main, alltså resetter koden konstant.
Kanske. Som jag tolkar TS inlägg så ligger man bara och blinkar LEDen i whileloopen ändå, med rätt frekvens på ON/OFF.
Startvärdet efter reset är LED=0, och det är bara inuti while som den tänds. Och fastnar man i den while-loopen oavsett vad sensorn ger så är det nog där som felet man bör börja med ligger. Sen kan man rätta resetproblemet.

Re: enkel adc med 12f675?
Postat: 5 oktober 2013, 13:01:34
av sodjan
> Ska läsa nivån från en fototransistor som kan ligga mellan 0-400mv.
Hur är det kopplat? Är det inget mer än själva fototransistorn?
> Tanken är att när nivån är mer än 100mV så ska jag toggla en utgång.
Fungerar det hela om du kör nivån upp och ner med en potentiometer?
Det första du behöver göra är att isolera problemet till antingen
givaren/fototransistorn eller koden. Sen vet du var du ska leta...
Re: enkel adc med 12f675?
Postat: 5 oktober 2013, 15:08:45
av newbadboy
Bara fototrissa. Den är rätt vänd. Ska försöka hinna kolla på det lite mer ikväll.
Re: enkel adc med 12f675?
Postat: 5 oktober 2013, 16:41:41
av sodjan
> Bara fototrissa.
OK. Jag ser inte hur det kan fungera. Har du kollar sidor som t.ex denna:
https://sites.google.com/site/therobotr ... to-arduino

Re: Enkel adc med 12f675?
Postat: 5 oktober 2013, 19:05:28
av SM7WVZ
Hallåj,
en annan kommentar: Notera att undre gränsen för matningsspänning inte är 2,0V för 12F675 när ADC:n är aktiv utan 2,5V för fullt temperaturområde. Dock står det 2,2V i databladet för området 0-125 grader ser jag, så kanske är det inte detta som ställer till det. Annars skulle ju detta kunna förklara om det fungerar lite svajigt.
Re: Enkel adc med 12f675?
Postat: 5 oktober 2013, 19:43:52
av newbadboy
Jag var så inne på att jag missat ngt på pinconfig delen så att jag missade helt att jag inte skrivit huvud while(1) loopen.
Nu funkar iaf koden om jag testar det med en pot.
Nästa problem är nog hur jag kopplat in fototrissan. Jag hade ingen susning hur de skall kopplas. Jag mätte spänning mellan emitter-bas när jag belyste den så då tog jag den och kopplade till ADC. men detta blir helskumt. När fototrissan är på plats mäter jag bara olika negativa spänningar..jag kan inte förklara detta just nu men det är oavsett fel.
Ser ut som jag får läsa på lite hur man koppla in en sådan
Problemet är lite om jag följer den bilden sodjan länkar till är att den verkar vara digital koppling vad jag kan se.
Jag har i vissa lägen väldigt snålt med ljus så att jag är inte säker på att trissan kommer sluta/öppna ordentligt. Därav vill jag läsa ett analogt värde, så att även svagt ljus kan detekteras.
Re: Enkel adc med 12f675?
Postat: 5 oktober 2013, 19:45:17
av newbadboy
SM7WVZ skrev:Hallåj,
en annan kommentar: Notera att undre gränsen för matningsspänning inte är 2,0V för 12F675 när ADC:n är aktiv utan 2,5V för fullt temperaturområde. Dock står det 2,2V i databladet för området 0-125 grader ser jag, så kanske är det inte detta som ställer till det. Annars skulle ju detta kunna förklara om det fungerar lite svajigt.
Bra kommentar.. detta har jag missat. men jag klarar mig då matningen är som sagt 2,5V. Inte 2,0
Re: Enkel adc med 12f675?
Postat: 5 oktober 2013, 20:27:30
av Icecap
Sodjan har lagt in ett schema som visar det ganska tydligt. Strömmen genom transistorn varierar med mängden lys den utsätts för så ska du ha ett visst arbetsområde är det bara att välja rätt värde på motståndet. Du bör även avkoppla över motståndet med t.ex. en 10nF-100nF keramisk kondensator för att få stabil läsning med AD-omvandlaren.
Re: Enkel adc med 12f675?
Postat: 5 oktober 2013, 23:01:35
av sodjan
> Problemet är lite om jag följer den bilden sodjan länkar till är att den verkar vara digital koppling vad jag kan se.
Nej. Spänningen kommer att variera med ljusstyrkan.
Själva förhållandet styrs av typ/modell på fototransistor ("ljuskänslighet")
och storleken på motståndet (som Icecap) skrev. Men vi har (hade) ju en
susning om under vilka förhållanden det ska användas. Du får experimentera
fram optimala värden utifrån dina förhållanden.
> Nästa problem är nog hur jag kopplat in fototrissan. Jag hade ingen susning hur de skall kopplas.
Lite underligt efter som "arduino photo transistor" ger en hel del träffar i google.
En av de första har bilden som jag länkade in. Eller kör "bildsökning" i google med
samma sökargument så får du en massa schema direkt.
Re: Enkel adc med 12f675?
Postat: 6 oktober 2013, 10:52:21
av newbadboy
Det är sant, vad jag gjorde var att jag googlade på trissan. Det är en rätt gammal pjäs så just den hittade jag inte så mycket info om. Har en påse som jag fick för länge sedan.
Sedan googlade jag inte mer för jag trodde mig veta hur de skall kopplas 0:)
Re: Enkel adc med 12f675?
Postat: 6 oktober 2013, 12:33:28
av Walle
Vore det inte vettigt att använda comparatorn istället för ADCn? Då kan ju ju med lätthet koppla en pot till komparatorns minusingång för justering tillslagspunkten. Givetvis går det också att göra med ADCn, men det blir mer kod så samt att det faktiska inlästa värdet är ointressant i sig.
Re: Enkel adc med 12f675?
Postat: 6 oktober 2013, 14:44:05
av Icecap
Med ADC'n kan man lägga in tröskelvärden och spara ett potentiometer, självklart måste man ställa in rätt värde vilket gör det mer besvärligt vid massproduktion. Men vid one-of duger det alldeles fint.
Och potentiometer kostar, fyller och är instabila över tid.