Dobrý den,
prosím Vás o radu.
Nikde, ale opravdu nikde jsem nenašel, jak k ATmega8 připojit potenciometr například k pinu C.0 což je AD převodník.
Prosím Vás o radu, kde bych mohl najít elektronické schéma, jak potenciometr připojit, abych mohl snímat hodnotu jeho odporu.
Děkuji moc.
Fórum › Mikrokontroléry
Zapojení potenciometru k ATmega8
Ano,
připojil jsem to k portu 23 (PC0) na ATmega8, ale nefunguje
zde fragment programu:
Config Adc = Single , Prescaler = Auto
Start Adc
Channel = 0
Do
A = Getadc(channel)
X = 4.8875 * A
A = X
ja nechapu, kam mam pripojit proměnný výstup z potenciometru, na který adc? ADC.0,1,2,3,4,5?
Nikde to totiž nejde, alespon si myslim, ze to nejde, definovat, zda ADC.0 nebo ADC.1 atd....
V simulatoru bascomAVR mam jezdce, kterym menim hodnotu ADC, vše funguje, pak zapnu mikrocip, na jehoz vstupu ADC.0 mam potenciometr a nic nefunguje, prosim Vás o pomoc KIIV...
Je potrebné sa pozrieť na nastavenie bitov REFS1 a REFS0 v registry ADMUX procesora a zároveň ako máte privedené referenčné napätie na vstup Vref procesora. Tento krátky kód by vám mohol pomôcť,ale je v asm pre AVR. Používam ich pri čítaní napätí zo zdroja.
//definicie
//ADC prevodnik
//ADCSRA - register ADEN,ADSL,ADFR,ADIF,ADIE,ADPS2-0
.EQU SetADC = 0b10000111 //nastavenie ADCSRA registra CLK/128
.EQU UIn = 0b11100010 //napatie vstupne
//nastavenie v sekcii Init pri starte programu
.
.
.
//----------- ADC --------------
ldi A,SetADC //prednastavenie registra
out ADCSRA,A
.
.
.
ret
//rutina citacia hodnotu z ADC
ReadUin:
cbi ADCSRA,ADEN
ldi A,Uin //nastavim register ADMUX
out ADMUX,A
sbi ADCSRA,ADEN
nop
sbi ADCSRA,ADSC //odstartovanie AD prevodu
//pockam na skoncenie AD prevodu
R_Uin1:
sbic ADCSRA,ADSC
rjmp R_Uin1
in A,ADCH //tu je prevedena hodnota
ret
Příklad vše vysvětlí.
$regfile = "m8def.dat"
$crystal = 10000000
$hwstack = 32
$swstack = 8
$framesize = 16
'Použijeme vnitřní referenční napětí Uref.
'Má být 2,56 V. Přesnou hodnotu změříme na pinu AREF.
'Na pinu AREF je filtrační kond 100k proti zemi.
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
Defword U
Dim U As Long
Uref = 2560 '[mV]
Do
U0 = Getadc(0) 'pin ADC0 (PortC.0)
U1 = Getadc(1) 'pin ADC1
U2 = Getadc(2) 'pin ADC2
'atd
U = U0 * Uref
U = U / 1024 'napětí na ADC0 v milivoltech
Loop
End
Ještě doplním, že pin AVCC musí být vždy propojen s VCC, i když nepoužijeme AD konverzi.
VCC musí být perfektně filtrované.
I k AREF můžeme zkusit přidat elektrolyt, kdyby hodnoty nebyly stabilní.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Zapojení - LCD — založil blackball
Seriove vs paralelni zapojeni — založil Taufic
Zapojení LCD 8bit — založil Deko
Serio-paralelní zapojení rezistorů C++ — založil fojtasek18
Zapojení hradla na daný obvod — založil Midžel
Moderátoři diskuze