analoog naar digitaal bascom

Hallo, ik moet een analoog signaal (adc0) omzetten naar een hoge port (Portc.2) alleen heb het zo nu in het programma staan maar vraag me af wat ik nou verkeerd heb neergezet.

De waarde 279 is omgezet van 0,3 volt die mijn bascom op die pin binnenkrijg (pinc.0).

mijn type bascom is atmega88a-pu

Groetjes daniel

$regfile = "m88Def.dat"
$crystal = 8000000
$baud = 19200

Config Adc = Single , Prescaler = Auto , Reference = Internal

Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up
'comm naar PLC
Config Portc.3 = Output

'Set port rechtsom/linksom
Config Portc.1 = Output

'Storing naar PLC

Config Portc.2 = Output

'comm van PLC
Config Pinc.5 = Input

Pwm0a = 0

Do

If Getadc(0) = 279 Then Set Portc.2
If Pinc.5 = 1 Then Gosub Optoeren

Loop

Hoe groot is de kans dat je ADC conversie PRECIES 279 is? D'r zijn 1000 mogelijkheden. In de praktijk zal de ADC waarde altijd wat ruis hebben dus een paar waardes hoger of lager zijn dan de theoretisch uitgerekende waarde. Dus ook als de spanning precies 2.500V is, zal je niet altijd precies 511 of 512 uit je ADC krijgen, maar een "wolkje" waarbij die 511 en 512 vrij vaak voorkomen en 510 en 513 wat minder en 509 en 514 nog wat minder enz. En dat is niet eens meegenomen dat de voedingspanning (referentiespanning) niet altijd precies 5.000V zal zijn, maar ook nog wat zal kunnen varieren.

Kortom, je moet wat aan de logica in je programma doen.

(verder heb ik geen verstand van bascom).

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Arco

Special Member

Als je de Vcc van de controller als A/D referentie gebruikt, is bij 3.3v Vcc en 10 bit A/D een variatie van + of - 7 bits geen bijzonderheid.
(tot 50mV aan 'gras' op de Vcc is niet ongebruikelijk)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Arco, the Atmega8(k flash)8(en twintig pins) is d'r niet een die zomaar op 3.3V draait. Hmm. Ok. -a kan een nieuwere versie zijn die dat wel doet.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Arco

Special Member

Op 5v wordt 't dan + of - 5 bits...
(ik wist niet dat er nog moderne controllers zijn die alleen op 5v werken, da's toch wel een beetje verleden tijd... ;) )

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Ik heb het even opgezocht. De -A versie is toch wel redelijk modern en kan vanaf 1.8V draaien (tot 4MHz) en op 3.3V tot 12 MHz. TS draait op 8MHz, dus dat zou op 3.3V gewoon kunnen.

Wat ik niet snapte is dat 279 als meetwaarde met 0.3V overeen zou komen. Nu ik even heb zitten rekenen wat het bij 5V en 3.3V had moeten zijn.... Het blijkt dat de TS dus de interne 1.1V (+/- 10% !!!) referentie gebruikt.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 3 november 2020 13:48:39 schreef rew:
Ik heb het even opgezocht. De -A versie is toch wel redelijk modern en kan vanaf 1.8V draaien (tot 4MHz) en op 3.3V tot 12 MHz. TS draait op 8MHz, dus dat zou op 3.3V gewoon kunnen.

Wat ik niet snapte is dat 279 als meetwaarde met 0.3V overeen zou komen. Nu ik even heb zitten rekenen wat het bij 5V en 3.3V had moeten zijn.... Het blijkt dat de TS dus de interne 1.1V (+/- 10% !!!) referentie gebruikt.

Ik had dit gevonden waardoor ik dus op die 279 had ingevuld, maar heb dit lang niet gedaan waardoor ik niet zeker werkt of het zo wel moet

Breadboard opbouwen volgens onderstaand schema.
Één weerstand van 1k ? en één weerstand van 3k9 ?.
Een potmeter van 10k ? en een multimeter (ter controle).
Het programma hiernaast kopiëren naar Bascom AVR en verder afmaken. Begrijp je hoe het werkt?

De AD waarden lopen van
0 bij 0V t/m 1023 bij 5V.
Eigenlijk wordt 1023 al bereikt bij 1,1V.
Omdat de spanning goed te meten is tot 1,1V gebruiken we een spanningsdeler die zorgt voor deze max 1,1V.

De potmeter regelt over de beide weerstanden een totaalspanning van 0 tot 5V

Over de bovenste weerstand staat +4/5 deel van de totaalspanning, over de onderste +1/5 deel. Snap je dit?

Op de analoge ingang PC1 van de chip komt de spanning te staan die staat over de onderste weerstand van 1k.
Door spanningsdeling zijn dit spanningen tussen 0 en 1,1V.

U (V) AD-waarde
1,1 1024
1 931
0,9 838
0,8 745
0,7 652
0,6 559
0,5 465
0,4 372
0,3 279
0,2 186
0,1 93
0 0
De verhouding tussen de gemeten spanning en de totale spanning blijft gelijk. Daarom mag je de schaal waarden van 0 tot 1,1V omzetten naar schaal waarden van 0 tot 5V.

AD waarde 1024 ~ 1,1V
Deel 1024 door 11 en je weet de ijking van je voltmeter. Je loopt in stapjes van 1024:11= 93 naar beneden tot 0V.
AD waarden 0 t/m 92 ~ 0V
AD waarden 93 t/m 185 ~ 0,1V
Enz.

Aanvullende opdrachten:

1. Overspannings beveiliging maken.
Laat een rode led alarmerend gaan knipperen als de spanning boven de 3,5V uitkomt.

2. Geef je voltmeter uitslag weer m.b.v. 8 rode leds. Meer spanning ? meer brandende leds. Gebruik het opdrachtenboekje van OtMb. Opdracht 13, looplicht. 'Dit programma laat zien hoe je de AD converter en het Getadc commando kunt gebruiken.
'Je kan spanningen meten met de AD converter.

$regfile = "m88def.dat"
$crystal = 8000000
$baud = 19200

'Dit stelt de AD converter in, zie Bascom help voor meer informatie

Config Adc = Single , Prescaler = Auto , Reference = Internal

'Pinc… bevat de analoge ingangen van de Bascom!!!

Start Adc 'Start de ADC conversie

Dim Ad_waarde As Word

Do
'Sla de AD waarde op in Ad_waarde
Ad_waarde = Getadc(1)
Print "Analoge waarde = " ; Ad_waarde

Print "Voltmeter spanning is ";

Select Case Ad_waarde
Case Is < 93 : Print "0,0V"
Case 93 To 186 : Print "0,1V"
Case .............
Case ............

'Zelf verder afmaken en indelen!!!
'Eventueel terugkijken naar OtMb

End Select

Waitms 1000 'Even wachten
Print 'Regel overslaan
Loop 'Opnieuw uitvoeren

End

'ijk je gemaakte voltmeter met je multimeter. (1,1V)
'Meet met je multimeter de spanning over de onderste 1k en zorg ervoor dat je zelfgemaakte analoge meter dezelfde waarde weergeeft.

Of

'ijk je gemaakte voltmeter met je multimeter. (5V)
'Meet met je multimeter de spanning tussen potmeter en Gnd. Zorg ervoor dat je zelfgemaakte analoge meter dezelfde waarde weergeeft.

Arco

Special Member

Aanvullende opdrachten:

Schoolopdracht, of is dat voor ons bedoeld?... ;)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Lambiek

Special Member

Ik denk een schoolvraag, de andere vraag "eerder topic" staat ook onder schoolvragen.

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 3 november 2020 13:56:06 schreef Dstevie99:
Snap je dit?

Is dat voor mij? Dan begrijp jij eea niet goed. Ik probeer je te helpen. En hoewel ik eerst niet doorhad dat dat het een schoolvraag betrof, heb ik toevallig precies conform richtlijnen "schoolvragen" geantwoord. Gewoon omdat ik "zelf leren" hoog in het vaandel heb.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
benleentje

Golden Member

@Rew. Ik had even dezelfde gedachte maar als je doorleest word het duidelijk dat het om een directe kopie gaat van de schoolvraag
Tenzij je zelf ook nog leerling bent is het wel voor jouw ;)

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.