www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik In Abhängigkeit des PWM-Ergebinses(Spannungsmessung) Relais steuern


Autor: rentner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche mit einem Atmega8515 über PWM eine Spannung zu messen und 
in Abhängigkeit des Ergebnises verschieden Relais zu schalten.
Die PWM läuft soweit jedoch habe ich Probleme dem Controller zu sagen 
was er bei welcher Spannung machen soll.
Das war mein Gedanke:
 main1:
  sleep ; CPU schlafen legen
  nop
  sbrs rFlg,0 ; Ready flag Bit 0 abfragen
  rjmp main1 ; Nicht ready, schlaf weiter
  cbr rFlg,0x01 ; Setze Bit 0 zurück
  ;Spannungsvergleiche
  mov rmp,rRes ; Kopiere Ergebnis in Universalregister
  cpi R16,0b11000000 ;Spannung1
  brne fall1
  cpi R16,0b10000000 ;Spannung2
  brne fall2
  sbis PINB,0 
  rcall laden
  rjmp main1 ; fertig, schlafen legen
fall1:
ldi rmp,0b00000111 ;1 und 2 auf und 3 zu
out PORTA,rmp
rjmp main1

fall2:
ldi rmp,0b00000101 ; 1 auf und 2 und 3 zu
out PORTA,rmp
rjmp main1

laden:
ldi rmp,0b00001000
out PORTA,rmp
rjmp main1

kann mir bitte geholfen werden...

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Ich versuche mit einem Atmega8515 über PWM eine Spannung zu messen...

Also Spannung erzeugen mit PWM (+RC-Glied) kenne ich. Aber Spannung 
messen, ist mir neu. Solltest du vielleicht mal erläutern.

MfG Spess

Autor: Rentner Uralt (rentner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genau, ich erzeuge eine Spannung  über PWM und ein RC-Glied und 
vergleiche sie mit meiner Messspannung (Analogkomparator). In dem die 
Pulsweite verlängert oder verkürzt wird kann ich mich an die 
Messspannung annähern. siehe auch:
http://www.avr-asm-tutorial.net/avr_de/avr_adc500.html

Die habe als Ersatz für die Relais die LEDs meine STK500 genommen um das 
Ergebnis leichter feststellen zu können. LED 3-7 leuchtet, 0,1,2 nicht.

Vielen Dank für die schnelle Antwort.

Gruß Stefan

Autor: Ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Der Analogkomperator gibt aber nur 0 oder 1 (je nach > oder <) aus. Also 
solltest du nach Abfrage des AC das Tastverhältnis der PWM 
(OCR-Register) je nach Ergebnis erhöhen oder erniedrigen. Wenn dann ein 
Wechsel des AC erfolgt hast du die Spannung erreicht. Das OCR-Register 
entspricht dann dem Spannungswert.
Da du nur einen Teil deines Codes eingestellt hast, habe ich jetzt 
vielleicht auch offene Türen eingerannt.
Was mir allerdings noch aufgefallen ist: die Vermischung von Symbolen 
(.def ryx..) und z.B. 'cpi R16,0b10000000' kann tödlich sein. Entscheide 
dich für eine Variante. Entweder symbolische Variante oder normale 
Registernamen.

MfG Spess

Autor: rentner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank für deine Antwort!

die von dir beschriebene Vorgehensweise habe ich verwendet.
mein problem lieg genauer darin, dass ich in Abhängigkeit des ORC 
ergebnises schlaten möchte. wie evtl in in meinem Code zu erkennen ist 
habe ich 2 Fälle zu unterscheiden. Leider funktioniert meine 
Fallunterscheidung aber nicht...und hier bräuchte ich hilfe!

Gruß

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.