PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Spannung messen



Dominik009
08.02.2009, 13:52
Hallo
Ich hoffe ihr könnt mir helfen.
Ich bin recht neu hier und habe seit einiger zeit das rn-control.
Ich programmiere in Bacom.
Ich wollte mir jetzt bald einen Sharp GP2D12 kaufen.
So, nun will ich das wenn der sensor – 1V oder höher an porta.1
Ausgibt das mein atmega32 portD.4 auf low schaltet.
Kann mir da jemand helfen?

Viele liebe Grüße Dominik

ikarus_177
08.02.2009, 15:22
Hi Dominik,

du musst zuerst die Spannung des Sensors über den ADC einlesen, wie das geht, wird prima auf einer Seite im Wiki erklärt. Den gemessenen Spannungswert schreibst du dann einfach in eine Variable, nun wird geprüft, ob diese Variable größer als 1 ist, wenn ja, wird der von dir gewünschte Pin auf log. 0 geschalten, ansonsten nicht.

Viele Grüße

Dominik009
08.02.2009, 18:40
Hi Dominik,

du musst zuerst die Spannung des Sensors über den ADC einlesen, wie das geht, wird prima auf einer Seite im Wiki erklärt. Den gemessenen Spannungswert schreibst du dann einfach in eine Variable, nun wird geprüft, ob diese Variable größer als 1 ist, wenn ja, wird der von dir gewünschte Pin auf log. 0 geschalten, ansonsten nicht.

Viele Grüße

Hallo
nun das mit dem adc verstehe ich ja


Config Porta = Input
For I = 0 To 7
Porta.i = 1
Next I
For I = 0 To 7
Start Adc
Ws = Getadc(i)
Volt = Ws * Ref


aber wie ich das jetzt mit den variablen machen soll ist mir schleierhaft.
Das verstehe ich nicht.
kann mir da jemand vielleicht ein Beispiel geben oder den code ergänzen
oder es mir etwas genauer erklären?

Viele Grüße
Dominik

ikarus_177
08.02.2009, 20:43
Hi,

in deiner Variable 'Volt' steht also dann der Spannungwert, der am angegebenen Channel des ADC gemessen wurde. Überschreitet die Spannung einen bestimmten Wert, soll also eine Aktion ausgeführt werden. In Bascom lässt sich das sehr einfach z.B. so realisieren:


'Hier wird die ADC-Messung durchgeführt, deren Ergebnis schließlich in der Variable 'Volt' liegt

if Volt >= 1 then 'if - Bedingung zur Prüfung der Spannung
PORTD.4 = 0 'ist die Spannung größer oder gleich als 1V (also die Bedingung oben erfüllt ist, wird PORTD.4 auf log. 0 gesetzt
else
PORTD.4 = 1 'ist die Bedingung aber falsch (Spannung < 1V) wird der Portpin auf log. 1 gesetzt
endif 'die if-Bedingung muss auch ein Ende haben


Beispiele dazu findet man auch in der Bascom - Hilfe.


Viele Grüße

Dominik009
08.02.2009, 20:59
Hi,

in deiner Variable 'Volt' steht also dann der Spannungwert, der am angegebenen Channel des ADC gemessen wurde. Überschreitet die Spannung einen bestimmten Wert, soll also eine Aktion ausgeführt werden. In Bascom lässt sich das sehr einfach z.B. so realisieren:


'Hier wird die ADC-Messung durchgeführt, deren Ergebnis schließlich in der Variable 'Volt' liegt

if Volt >= 1 then 'if - Bedingung zur Prüfung der Spannung
PORTD.4 = 0 'ist die Spannung größer oder gleich als 1V (also die Bedingung oben erfüllt ist, wird PORTD.4 auf log. 0 gesetzt
else
PORTD.4 = 1 'ist die Bedingung aber falsch (Spannung < 1V) wird der Portpin auf log. 1 gesetzt
endif 'die if-Bedingung muss auch ein Ende haben


Beispiele dazu findet man auch in der Bascom - Hilfe.


Viele Grüße

Hallo
also müsste der gesamte code also so lauten



Config Porta = Input
For I = 0 To 7
Porta.i = 1
Next I
For I = 0 To 7
Start Adc
Ws = Getadc(i)
Volt = Ws * Ref
if Volt >= 1 then 'if - Bedingung zur Prüfung der Spannung
PORTD.4 = 0 'ist die Spannung größer oder gleich als 1V (also die Bedingung oben erfüllt ist, wird PORTD.4 auf log. 0 gesetzt
else
PORTD.4 = 1 'ist die Bedingung aber falsch (Spannung < 1V) wird der Portpin auf log. 1 gesetzt
endif 'die if-Bedingung muss auch ein Ende haben




gruß und danke für deine hilfe,
Dominik

ikarus_177
08.02.2009, 21:08
Hi,

du willst ja nur die Spannung an PORTA.1 messen (lt. deinem ersten Post).
Der ganze Code würde also ungefähr so aussehen:


Config Porta = Input
Start Adc
Ws = Getadc(1)
Volt = Ws * Ref
if Volt >= 1 then 'if - Bedingung zur Prüfung der Spannung
PORTD.4 = 0 'ist die Spannung größer oder gleich als 1V (also die Bedingung oben erfüllt ist, wird PORTD.4 auf log. 0 gesetzt
else
PORTD.4 = 1 'ist die Bedingung aber falsch (Spannung < 1V) wird der Portpin auf log. 1 gesetzt
endif 'die if-Bedingung muss auch ein Ende haben


Die Variablen müssen halt noch vorher passend definiert werden!


Viele Grüße