www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Regler in Assembler?


Autor: Michael Zellweger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen
Ich entwickle mir einen Lichtregler mit einem Mikrokontroller
PIC16F688, der eine bestimmte Beleuchtungsstärke konstant halten soll,
auch wenn anderes Licht dazu kommt.
Um die Lampe zu regulieren möchte ich nur mit den Befehlen heller oder
dunkler arbeiten.
Ich programmiere in Assembler. Wie ich die Befehle der Lampe senden
muss ist mir klar.
Aber ich weiss nicht mit welcher Routine ich das Resultat der
AD-Wandlung bearbeiten muss, damit ich nacher weiss ob das Licht
heller, dunkler oder gleich bleiben muss. Wie kann ich in Assembler,
durch erhöhen oder verringern des Lichtes, den Wert der Wandlung immer
konstant beibehalten?
Hat vieleicht jemand eine Idee oder sowas schon selber gemacht?

Autor: Gralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
?:-|

hab ich irgendwie nicht ganz verstanden. Pic steuert EINE Lampe in
Helligkeit. PIC mißt Helligkeit (z.B. über Fotowiderstand) mit ADC.
Wo ist das Problem? Einfach gemessenen Wert mit konstante vergleichen.
Ist Messung höher, dann Lampe so lange runter regeln, bis Messung
wieder paßt. Und das ganze natürlich auch in die andere Richtung.

Gralf

Autor: Michael Zellweger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Problem ist wie kann ich die Konstante mit dem AD-Wert vergleichen
in Assembler. Ich kenne keinen Vergleichsbefehl mit dem ich zwei Werte
vergleichen kann und dann danach entscheiden. Die Werte verhalten sich
ja auch nicht linear. Wenn der Fotowiderstand die maximale Spannung
anngibt muss ich ja immer runter regeln, aber wenn die kleinste
Spannung anliegt ist es schon viel zu dunkel!

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal bei google nach PI-Regler. Die Differenzengleichungen sind
einfach in Assembler zu programmieren.

Autor: Bri (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab bei google ein schönes Script gefunden (siehe Anhang). Auf Seite
42/43 ist das für dich interessante.

Autor: Carsten Steiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
subtrahiere einen konstanten Wert (der SOLL-Wert) von deinem A/D-Wert.
Ist das Ergebnis 0, so hast du den Soll-Wert, wenn es nicht 0 ist, so
gibt es zwei Möglichkeiten:
1. Carry-Flag gesetzt -> es gab einen Überlauf, also A/D-Wert zu klein
2. Carry-Flag nicht gesetzt -> kein Überlauf, also A/D-Wert zu groß

Autor: Gralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat der Sensor nicht die selbe Kennlinie, wie die Lampe, kannst Du auch
vorher den einen an den anderen Wert angleichen. Würde ich z.B. über
eine Look-up-Tabelle machen, desen Werte zuvor "manuell" errechnet
sind. Ist schnell und von berechenbarer Dauer, wenn es um zeitkritsche
Dinge geht.
Im PIC-Assembler kenne ich mich nicht aus, aber beim AVR gibt es einen
Vergleichsbefehl: cp für zwei Register bzw. cpi für Register und
Konstante und cpc für 2 Register+carry. Danach kann man dann über div.
Abfragen verzweigen. Ist technisch das selbe wie die Subtraktion, kommt
aber dem menschlichen Denken des Programmflusses näher.

Gralf

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.