ADC konvertálás
Re: ADC konvertálás
Már meg van a megoldás!
dim a as byte
a=getadc(1,32)
a=adch
Tökéletesen működik!
dim a as byte
a=getadc(1,32)
a=adch
Tökéletesen működik!
Re: ADC konvertálás
Nem igazán értem!?
Ha jól tudom 10 bites az ADC regiszter.
Bites ábrázolással:
Ha jól tudom 10 bites az ADC regiszter.
Bites ábrázolással:
Kód: Egész kijelölése
Eredmény: 000000xx xxxxxxxx
+32: 00100000
ADCH= 000000xx Eredmény???,
Re: ADC konvertálás
Akkor leírom részletesen:
Az ADC regiszter 16 bites, de csak tizet használ az ADC felbontása miatt, alaphelyzetben az eredmény jobbra van igazítva.
pl.:
Eredmény: 000000xx xxxxxxxx, ADCH=000000xx, ADCL=xxxxxxxx, ez ugye stimm.
Az ADMUX-ban van 1 bit, neve: ADLAR, ha ez 1, akkor az értékek balra vannak igazítva.
pl.:
Eredmény: xxxxxxxx xx000000, ADCH=xxxxxxxx, ADCL=xx000000, ugye ha 8 bit kell, akkor csak az ADCH kell, így nem kell shiftelni, osztani, ez a leggyorsabb megoldás a 8 bitre.
A GETADC(1,32) azt lelenti, hogy az ADMUX regiszterben az 1 a kiolvasni kívánt ADC száma, a 32 pedig paraméter az 5-ik bit 1-be állítása azaz ADLAR=1, binárisan: &b00100001.
Bízom benne, hogy érthető, ha mégsem, írj!
Az ADC regiszter 16 bites, de csak tizet használ az ADC felbontása miatt, alaphelyzetben az eredmény jobbra van igazítva.
pl.:
Eredmény: 000000xx xxxxxxxx, ADCH=000000xx, ADCL=xxxxxxxx, ez ugye stimm.
Az ADMUX-ban van 1 bit, neve: ADLAR, ha ez 1, akkor az értékek balra vannak igazítva.
pl.:
Eredmény: xxxxxxxx xx000000, ADCH=xxxxxxxx, ADCL=xx000000, ugye ha 8 bit kell, akkor csak az ADCH kell, így nem kell shiftelni, osztani, ez a leggyorsabb megoldás a 8 bitre.
A GETADC(1,32) azt lelenti, hogy az ADMUX regiszterben az 1 a kiolvasni kívánt ADC száma, a 32 pedig paraméter az 5-ik bit 1-be állítása azaz ADLAR=1, binárisan: &b00100001.
Bízom benne, hogy érthető, ha mégsem, írj!
Re: ADC konvertálás
Köszi!
Mindig tanul az ember!
Ez eddig elkerülte a figyelmemet: „Az ADMUX-ban van 1 bit, neve: ADLAR, ha ez 1, akkor az értékek balra vannak igazítva.”
Mindig tanul az ember!
Ez eddig elkerülte a figyelmemet: „Az ADMUX-ban van 1 bit, neve: ADLAR, ha ez 1, akkor az értékek balra vannak igazítva.”
- szasza7103
- Biztosítékgyilkos
- Hozzászólások: 53
- Csatlakozott: 2012. október 10. szerda, 6:00
Re: ADC konvertálás
Szép jó napot!
Az volna a kérdésem ,hogy ha szeretnék dc 12-15V mérni akkor elég egy ellenálást sorba kötni az adc lábbal amin esik a feszültség?
A kapott értékből meg átszámolom valahogy a nekem megfelelő értéket.
Autó akku feszültséget és generátor feszültséget szeretnék mérni a járművemben majd ez lcd-re ki irni.
Üdv!
Az volna a kérdésem ,hogy ha szeretnék dc 12-15V mérni akkor elég egy ellenálást sorba kötni az adc lábbal amin esik a feszültség?
A kapott értékből meg átszámolom valahogy a nekem megfelelő értéket.
Autó akku feszültséget és generátor feszültséget szeretnék mérni a járművemben majd ez lcd-re ki irni.
Üdv!
Re: ADC konvertálás
Soros???? És akkor milyen feszültség lenne az AVR lábán?
Inkább:
1, Láb és GND közé: 5.1V Zener
2, Ellenállásosztó (10k/2k2)
Inkább:
1, Láb és GND közé: 5.1V Zener
2, Ellenállásosztó (10k/2k2)
Re: ADC konvertálás
Róbert, ez akkumulátor.
Aksi (+) <=> 10k <= mérő => 2.2k <=> Aksi (-).
A megoldás ugye konstans 1,2mA-rel szívja az aksit lefelé, azaz ha hosszabb ideig nem használod a kocsit, előbb-utóbb nullára lemerül.
Az ellenállást cseréld inkább kondenzátorra.
Aksi (+) <=> 2.2 uF <= mérő => 10 uF <=> Aksi (-).
Aksi (+) <=> 10k <= mérő => 2.2k <=> Aksi (-).
A megoldás ugye konstans 1,2mA-rel szívja az aksit lefelé, azaz ha hosszabb ideig nem használod a kocsit, előbb-utóbb nullára lemerül.
Az ellenállást cseréld inkább kondenzátorra.
Aksi (+) <=> 2.2 uF <= mérő => 10 uF <=> Aksi (-).
Re: ADC konvertálás
Ja, akku...
Felső ellenállás: 1Mohm, alsó 220k. Ezzel paralell: 100nF és 5V1-es zener.
Kondikkal osztást azt inkább váltóáramra. Szivárgó áramra nem építenék (feszültség-/hőfok-függő).
Felső ellenállás: 1Mohm, alsó 220k. Ezzel paralell: 100nF és 5V1-es zener.
Kondikkal osztást azt inkább váltóáramra. Szivárgó áramra nem építenék (feszültség-/hőfok-függő).
- szasza7103
- Biztosítékgyilkos
- Hozzászólások: 53
- Csatlakozott: 2012. október 10. szerda, 6:00
Re: ADC konvertálás
Köszönöm a válaszokat!
Küzdök vele.
Küzdök vele.
Re: ADC konvertálás
Sziasztok!
Megesz a fene... 7.7-es Bascom, Mega328P uC, WIN7/64 és XP32 alatt is fordítva:
A gondom: Ha az első 3db ADC olvasás benne van így, egymás után, akkor az utolsó ADC olvasás felülírja az összes ADC változót. Tehát Temp_w3 értéke lesz minden Temp_w változó. Ha beszúrogatom a kiírások közé, akkor természetesen jól működik és a Temp_w-ket sem szúrja el... Azon már nem is idegesítem magam, hogy az ADC csatornaszáma 1-el el van csúszva, tehát az ADC(1) a 0. csatornát olvassa pl.
Ha valaki lefordítaná és elküldené a hex-et próbaképp, hát ha mégis itt van valami nagy bug...
JAni
Megesz a fene... 7.7-es Bascom, Mega328P uC, WIN7/64 és XP32 alatt is fordítva:
Kód: Egész kijelölése
$regfile = "m328pdef.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 40
$framesize = 40
$baud = 38400
Ddrb = &B00100111
Ddrc = &B00000000
Ddrd = &B1111_1110
Dim Temp_string As String * 10
Dim Temp_w1 As Word
Dim Temp_w2 As Word
Dim Temp_w3 As Word
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portd.7 , Rs = Portd.6
Config Adc = Free , Prescaler = Auto , Reference = Avcc
Cls
Do
Temp_w1 = Getadc(0)
'Temp_w2 = Getadc(1)
'Temp_w3 = Getadc(2)
Temp_string = "000" + Str(temp_w1)
Temp_string = Right(temp_string , 4)
Locate 1 , 1 : Lcd Temp_string
Temp_w2 = Getadc(1)
Temp_string = "000" + Str(temp_w2)
Temp_string = Right(temp_string , 4)
Locate 1 , 6 : Lcd Temp_string
Temp_w3 = Getadc(2)
Temp_string = "000" + Str(temp_w3)
Temp_string = Right(temp_string , 4)
Locate 1 , 11 : Lcd Temp_string
Locate 2 , 1 : Lcd Temp_w1 ; " " ; Temp_w2 ; " " ; Temp_w3
Loop
End
Ha valaki lefordítaná és elküldené a hex-et próbaképp, hát ha mégis itt van valami nagy bug...
JAni
Re: ADC konvertálás
Szia
privátban küldtem
Üdv Dani
privátban küldtem
Üdv Dani
Re: ADC konvertálás
Kód: Egész kijelölése
...
Config Adc = Free , Prescaler = Auto , Reference = Avcc
'Now give power to the chip
Start Adc '<<<?
...
Re: ADC konvertálás
Már ki is próbáltam, sajnos nem nyert
Most úgy fut a program, hogy Single-re van állítva az ADC. Persze így is cseréli a csatornákat, de arra könnyű
rájönni. Belenéztem a DAT file-ba, összehasonlítottam régebbivel (Compare It király!), van valami katymasz, az újabba
találtam is elírást, de az nem lényeges most.
Azért köszi, hogy ránéztél!
JAni
Most úgy fut a program, hogy Single-re van állítva az ADC. Persze így is cseréli a csatornákat, de arra könnyű
rájönni. Belenéztem a DAT file-ba, összehasonlítottam régebbivel (Compare It király!), van valami katymasz, az újabba
találtam is elírást, de az nem lényeges most.
Azért köszi, hogy ránéztél!
JAni
Re: ADC konvertálás
Jani, másik processzorral próbáltad már, más típusúval.
Re: ADC konvertálás
Szia!
Nem, csak másik megegyező modullal (2-vel). Fejlesztés alatt vagyok, tehát madzagolva van, érdekességképp csak
tesztelni akartam egy rutint, akkor esett be a vacakság. Szerencsére a készülékben nem lesz ADC (remélem),
de majd kivesézem én ezt a dolgot. Vagy most már tényleg véglegesen letörlöm az egész fordítót és áttérek
másra. Amennyi hibát én már találtam benne...a szívás idők alatt megtanulhattam volna bármilyen fordítót...
Bár ahogy látom, semmi sem bug mentes
A DAT fileban szerintem valami el vagyon vésve, de majd ha lesz idő/kedv.
JAni
Nem, csak másik megegyező modullal (2-vel). Fejlesztés alatt vagyok, tehát madzagolva van, érdekességképp csak
tesztelni akartam egy rutint, akkor esett be a vacakság. Szerencsére a készülékben nem lesz ADC (remélem),
de majd kivesézem én ezt a dolgot. Vagy most már tényleg véglegesen letörlöm az egész fordítót és áttérek
másra. Amennyi hibát én már találtam benne...a szívás idők alatt megtanulhattam volna bármilyen fordítót...
Bár ahogy látom, semmi sem bug mentes
A DAT fileban szerintem valami el vagyon vésve, de majd ha lesz idő/kedv.
JAni