-
        

Ergebnis 1 bis 6 von 6

Thema: Spannung messen

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    459

    Spannung messen

    Anzeige

    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?

    [schild=14 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Viele liebe Grüße Dominik[/schild]

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    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

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    459
    Zitat Zitat von ikarus_177
    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
    Code:
    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

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    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:

    Code:
    '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

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    459
    Zitat Zitat von ikarus_177
    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:

    Code:
    '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
    Code:
    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

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    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:

    Code:
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •