In Abhängigkeit des PWM-Ergebinses(Spannungsmessung) Relais steuern

Gast #1253690
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:
1
 main1:
2
  sleep ; CPU schlafen legen
3
  nop
4
  sbrs rFlg,0 ; Ready flag Bit 0 abfragen
5
  rjmp main1 ; Nicht ready, schlaf weiter
6
  cbr rFlg,0x01 ; Setze Bit 0 zurück
7
  ;Spannungsvergleiche
8
  mov rmp,rRes ; Kopiere Ergebnis in Universalregister
9
  cpi R16,0b11000000 ;Spannung1
10
  brne fall1
11
  cpi R16,0b10000000 ;Spannung2
12
  brne fall2
13
  sbis PINB,0 
14
  rcall laden
15
  rjmp main1 ; fertig, schlafen legen
16
fall1:
17
ldi rmp,0b00000111 ;1 und 2 auf und 3 zu
18
out PORTA,rmp
19
rjmp main1
20

21
fall2:
22
ldi rmp,0b00000101 ; 1 auf und 2 und 3 zu
23
out PORTA,rmp
24
rjmp main1
25

26
laden:
27
ldi rmp,0b00001000
28
out PORTA,rmp
29
rjmp main1

kann mir bitte geholfen werden...
Gast #1253704
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
#1253723
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
Gast #1253742
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
Gast #1258425
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.