Forum: Mikrocontroller und Digitale Elektronik Fensterkomparator mit AVR


von Thomas R. (skeleton)


Lesenswert?

Wie kann ich einen Fensterkomparator mittels AVR realisieren? Er sollte 
innerhalb 3 Spannungsbereiche und zusätzlicher Lichtschranke jeweils 
eine andere Aktion mittels SPI-Bus durchführen. Hab mir das mit 
UND-Funktionen überlegt.Nur wie gebe ich die Spannungsbereiche für die 
Fenster ein?Ideen Ratschläge??? ich bin für alles offen und leider 
Anfänger, lese mich aber grad ein.

von crazy horse (Gast)


Lesenswert?

deine Frage ist so nicht beantwortbar.

von Rahul D. (rahul)


Lesenswert?

Zu messende Spannung am AD-Wandler anlegen (u.U. über Spannungsteiler).
AD-Wandler einlesen.
AD-Wert mit entsprechenden Grenzwerten vergleichen
Nachgucken, ob Lichtschranke auch irgendwas gemacht hat.
Daten per SPI ausgeben.

sozusagen: Pippifax

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>>Nur wie gebe ich die Spannungsbereiche für die Fenster ein?

Über Konstanten, die Du im AVR-Flash oder AVR-EEPROM ablegst oder über 
eine Anwender-Schnittstelle, wie zum Beispiel ein Display und ein paar 
Tasten oder einen Drehencoder.

von Thomas R. (skeleton)


Lesenswert?

Stichwort: Pippifax
mal langsam autofahren musste man auch erst lernen und es war schwer 
jetzt kanns jeder und ist jetzt pippifax.ich muss es noch lernen...das 
programmieren...
hilft mir nicht weiter wenn ich die Befehle dazu nicht kenne,das prinzip 
aber schon

ich muss zwischen den fenstern jeden gemessenen spannungswert eine 
bitfolge zuweisen.
die frage ist wie kann ich die grenzwerte der fenster 
definieren?(befehle)

mit der lichtschranke/Reed-Relais habe ich mich missverständlich 
ausgedrückt..
der AVR soll die spannung messen und gleichzeitig die 
lichtschranke/Reed-Relais auswerten, das ganze mit einer UND-Verknüpfung 
abhängig vom Spannungswert an die SPI-schnittstelle

hoffe ich habs jetzt nicht geschafft alle komplett zu verwirren

@ Travel Rec.
wie kann ich diese konstanten definieren?Mögliche Schnittstellen fallen 
aus;soll automatisch funktionieren ohne manuelle eingriffe

@ crazy horse
hilft das weiter?

von Uhu U. (uhu)


Lesenswert?

Ist das wirklich so schwer, daß man sich das nicht mit dem gesunden 
Menschenverstand überlegen kann?

Z.B. so:

Wenn der ADU einen Wert < 100 liefert, dann liegt er im Fenster 0
Wenn der ADU einen Wert < 200 liefert, dann liegt er im Fenster 1
Wenn der ADU einen Wert < 300 liefert, dann liegt er im Fenster 2

usw. usf. -- eben so, wie man das auch machen würde, wenn man zu Fuß 
irgendwelche Größen in Größenklassen einsortieren will.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

in Assembler:

cpi  ADWERT, Konstante ;ADWert 8Bit vom AD-Wandler, Konstante 0-255
brcs Sprungmarke
...

oder:

cpi  ADWERTL, low(Konstante) ;ADWertL untere 8 Bit vom AD-Wandler
cpc  ADWERTH, high(Konstante) ;ADWertH obere 8 (2) Bit vom AD-Wandler
brcs Sprungmarke
...


Schau Dir mal die Befehlsübersicht des Assemblers im AVR-Studio und 
einiger der vielen Beispielcodes in der Codesammlung und der AppNotes 
von ATMEL an.

von Uhu U. (uhu)


Lesenswert?

Wieso denn jetzt auch noch in Assembler??? Meinst du nicht, daß Thomas 
zuerst mal mit einer höheren Programmiersprache anfangen sollte?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Auf keinen Fall. Ich selbst habe einst mit ASM begonnen und bin dabei 
geblieben. Bislang habe ich alle meine Projekte damit bewältigen können 
und das sind inzwischen etliche! Aber das soll der Thomas mal selbst 
entscheiden und es war ja nur ein Tip, wie man es machen kann.

von Uhu U. (uhu)


Lesenswert?

Nun ja, ich programmiere selbst seit Jahrzehnten in ASM, aber das einem 
Anfänger zum Einstig zu empfehlen, ist ungefähr so sinnvoll, wie einem 
Kind das Schwimmen beizubringen, indem man es einfach ins Wasser 
wirft...

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Das siehst Du so. Die Struktur der einzelnen ASM-Befehle zu verstehen 
ist ziemlich einfach, vor allem, wenn man mit 5 Befehlen anfängt und, 
nachdem die erste LED dann blinkt, sich langsam steigern kann. Außerdem 
braucht man außer den Datenblättern und AppNotes keine weitere 
Fachlektüre. Der ideale Wochenendspaß.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Uhu Uhuhu wrote:

> ..., ist ungefähr so sinnvoll, wie einem
> Kind das Schwimmen beizubringen, indem man es einfach ins Wasser
> wirft...

...oder um bei Thomas' Autofahr-Vergleich zu bleiben: wie einem das
Autofahren beizubringen, indem man ihm die Einzelteile des Autos
vor die Nase legt.  Nach dem Zusammenschrauben weiß er zwar, wie
das Auto funktioniert (und kann es notgedrungen auch fahren,
schließlich musste er oft genug zwischendrin ausprobieren, was
schon funktioniert), aber es ist dann wohl einige Zeit ins Land
gegangen.

Um die Frage aber für Thomas passend zu beantworten, müsste man
wohl auch seine Umgebung (Programmiersprache, Debugmöglichkeiten,
...) kennen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Um die Frage aber für Thomas passend zu beantworten, müsste man
>wohl auch seine Umgebung (Programmiersprache, Debugmöglichkeiten,
>...) kennen.

Die Vorkenntnisse im Umgang mit programmierbaren Bausteinen mal nicht zu 
vergessen.

von Spess53 (Gast)


Lesenswert?

Hi

@Jürgen: Dein Vergleich hinkt etwas. Im Gegensatz zum Autofahren MUSST 
du zum Programmieren deinen wissen, was jedes Register und jedes Bit 
bewirkt. Das hat nichts mit der Programmiersprache zu tun.
Wenn ich die Fragen hier im Forum betrachte komme ich aber zu dem 
Schluss, daß C-Anfänger mehr mit der Spache, ASM-Anfänger mehr mit der 
Umsetzung Probleme haben.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.