mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Spannungenvergleich mit atmega


Autor: Lamtaoua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe einen ATmega16 und würde gerne 4 Spannungen miteinander 
vergleichen. Der ATmega16 hat ja einen internen Komparator, der aber wie 
ich weis nur 2 Spannungen miteinander vergleichen kann.
Gibt es eine andere Möglichkeit mehr als 2 Spannungen mit dem ATmega16 
zu vergleichen, vielleicht über den ADC?
Die 4 Spannungen sind die Ausgangsspannungen von 4 Sensoren,damit ich 
weiss ob alle gut funktionieren ,muss ich die vergeilchen

Wäre toll, wenn mir jemand mit Beispielprogramm helfen könnte .
Danke

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lamtaoua schrieb:

> Wäre toll, wenn mir jemand mit Beispielprogramm helfen könnte .

http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Autor: Lamtaoua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort aber den Tutorial hilft nicht viel weil da kein 
beispiel über den Spanungsvergleich gibt

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beispiel:
u1, u2 sind die gespeicherten Werte vom AD-Wandler (Wie das geht steht 
doch im Tutorial)
if (u1 > u2) {
 /* tue was */
} else {
 /* tue was anderes */
}
Viel Erfolg

Autor: Lamtaoua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da sind nicht nur zwei spannungen sondern 4 ,die miteinander vergleichen 
sollen.daraus will ich wissen welche von denen bzw welche sensor 
funktioniert nicht gut
zum beispiel:
sensor1 liefert 1,9v   sensor2 2,1v   sensor3 2v   sensor4  1v
das heißt sensor4 funktioniert nicht

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lamtaoua schrieb:
> Da sind nicht nur zwei spannungen sondern 4 ,die miteinander vergleichen
> sollen.

Da es keine Operatoren zum Vergleich von mehr als zwei Werten gibt, 
musst Du einen Vergleich von vier Operanden selbst schreiben. Sowas 
nennt man "programmieren". ;-)

Da Du wahrscheinlich sowieso nie den Fall haben wirst, dass alle vier 
Werte identisch sind, definierst Du entweder einen Bereich von absoluten 
Werten in dem alle vier Werte sein müssen oder eine maximale Differenz 
die bei jeweils paarweisem Vergleich nicht überschritten werden darf. 
Etwas besser lesbar, könnte man auch die Werte sortieren und den 
grössten und den kleinsten Wert entweder gegen den absoluten Bereich 
oder gegen die maximale Differenz prüfen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lamtaoua schrieb:
> Danke für die Antwort aber den Tutorial hilft nicht viel weil da kein
> beispiel über den Spanungsvergleich gibt

Du meinst du kannst keine Vergleiche nach denen Wünschen machen, wenn du 
erst mal die 4 Werte hast?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lamtaoua schrieb:
> Da sind nicht nur zwei spannungen sondern 4 ,die miteinander vergleichen
> sollen.daraus will ich wissen welche von denen bzw welche sensor
> funktioniert nicht gut

Definiere ein Kriterium, woran du erkennen kannst, welcher Sensor 'nicht 
gut funktioniert' und programmiere es aus.

> zum beispiel:
> sensor1 liefert 1,9v   sensor2 2,1v   sensor3 2v   sensor4  1v
> das heißt sensor4 funktioniert nicht

Warum? Woran erkennst du das?
(Und nein: Die Antwort "durch scharfes Hinschauen" gilt nicht.
 Du brauchst eine Vorschrift, an die sich deine kleine 6-jährige 
Schwester einfach nur strikt halten muss um zum Schluss zu kommen: der 
ist schlecht)

Autor: Martin Gerken (mager)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt doch genug Analogeingänge: alle 4 Werte mittels AD-Wandlung 
ermitteln und per Software vergleichen. Das ist trivial, Du musst nur 
die Beispiele aufbohren (CAVE: nicht den internen Komparator benutzen!)

Autor: Lamtaoua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sind Ultraschallsensoren je näher an einer z.beispiel Wand sind 
die,desto größer den Ausgangsspanung.
d.h die sollen fast gleiche Spannungen liefern.

Autor: byte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was willst du den überhaupt machen/vergleichen. Willst du die Sensoren 
grundsätzlich auf Funktion überprüfen (Plausibilität) oder schlichtweg 
nur die Zustände auswerten? Also was Steuern/Regeln? Der Begriff 
"vergleichen" sagt hier absolut garnix aus. Was, warum, wieso, was soll 
passieren? Man kann ein Problem nur korrekt Lösen wenn man das Problem 
bzw. die Aufgabenstellung richtig/einfach Formuliert. Mit allen 
Parametern.

Autor: Lamtaoua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so das ist steuerung von einparkhilfe mit LEDs Anzeige und akustische 
Warnalarm.wie alle wissen die einparkhilfe funktioniert mit hilfe von 
mehrere ultraschallsensor.
was ich jetzt nun will dass nach bestimmter zeit soll ein Test 
durchgeführt werden damit man weiss ob die 4 Sensoren funktionieren.wenn 
ja den Programm läuft weiter und wenn nicht dann halt Fehlermeldung.
hab mir gedacht dass diese Test könnte mit Hilfe von dem vergleich von 
Ausgangsspannungen von den 4 Sensoren.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lamtaoua schrieb:

> hab mir gedacht dass diese Test könnte mit Hilfe von dem vergleich von
> Ausgangsspannungen von den 4 Sensoren.

Ja ok.
Bis hier her klingt das ja erst mal nicht schlecht.

> d.h die sollen fast gleiche Spannungen liefern.

definiere 'fast'.

Genau darum geht es beim programmieren: Das man auch einmal kreativ ist 
und sich was ausdenkt.

Du ganz persönlich: Wie würdest du vorgehen?
Du hast 4 Werte von den Sonsoren:

     512     430    640    390

Ist einer dieser Werte schlecht?
Wenn ja, welcher? Wie hast du das festgestellt? Wonach hast du dich 
gerichtet? Hast du eine Formel benutzt? Wenn ja, welche?

Keine Programmiersprache der Welt kann dir das abnehmen, dass du auch 
mal kreativ an die Dinge herangehst und dir was ausdenkst. Du und 
niemand anderer definiert das Kriterium wonach ein fehlerhafter Sensor 
erkannt wird.

Wenn du sagst: ich nehme den Mittelwert aller 4 Messungen und wenn einer 
der 4 Werte mehr als 10% vom Mittelwert abweicht, dann gilt er als 
schlecht.

Wenn du das so festlegst, dann ist das so.

Wenn du sagst: Nein das will ich so nicht haben, ich nehme den Median 
aller 4 Werte und mach von dort weg wieder die 10% Regel

dann gilt das als dein Kriterium.

Wenn du sagst: ....

Aber DU bist derjenige, der hier Gott spielt und sich die Welt der 
Abstandssensoren und der Erkennung von schlechten Messwerten so 
erschafft, wie er es für richtig befindet.

Es gibt kein richtig und kein falsch. Richtig ist erst mal das was du 
definierst. Wenn das dann in der Praxis nicht funktioniert, dann war die 
zugrundeliegende Idee schlecht.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Lamtaoua (Gast)

>Da sind nicht nur zwei spannungen sondern 4 ,die miteinander vergleichen
>sollen.

Oh Gott, da musst du ja TATSÄCHLICH mal ein klein wenig selber 
nachdenken. Unzumutbar!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

#define TOLERANCE 10

mw = (adc[0] + adc[1] + adc[2] + adc[3]) >> 2;
for( uint8_t i = 0; i < 4; i++ )
  if( abs( mw - adc[i]) > TOLERANCE )
    printf( "Sensor %d hat ne Macke!\n\r", i );


Peter

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte einmal höflich auf meinen Beitrag hier 
Beitrag "Re: Spannungenvergleich mit atmega" hinweisen, in dem 
ich das Vorgehen skizziert habe.

Autor: Lamtaoua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da hast Recht Karl heinz Buchegger.
man fragt damit man auf dem Kriterium kommt und darauf bin ich gekommen.
bin halt auch anfänger :)
Danke an alle

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.