Forum: Mikrocontroller und Digitale Elektronik Spannungenvergleich mit atmega


von Lamtaoua (Gast)


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

von Karl H. (kbuchegg)


Lesenswert?


: Bearbeitet durch Admin
von Lamtaoua (Gast)


Lesenswert?

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

von U.R. Schmitt (Gast)


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

von Lamtaoua (Gast)


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

von Grrrr (Gast)


Lesenswert?

Anonym0 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.

: Bearbeitet durch Admin
von Karl H. (kbuchegg)


Lesenswert?

Anonym0 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?

: Bearbeitet durch Admin
von Karl H. (kbuchegg)


Lesenswert?

Anonym0 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)

: Bearbeitet durch Admin
von Martin G. (mager)


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!)

von Lamtaoua (Gast)


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.

von byte (Gast)


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.

von Lamtaoua (Gast)


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.

von Karl H. (kbuchegg)


Lesenswert?

Anonym0 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.

: Bearbeitet durch Admin
von Falk B. (falk)


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!

von Peter D. (peda)


Lesenswert?

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


Peter

von Grrrr (Gast)


Lesenswert?

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

von Lamtaoua (Gast)


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

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.