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
Anonym0 schrieb: > Wäre toll, wenn mir jemand mit Beispielprogramm helfen könnte . http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#ADC_.28Analog_Digital_Converter.29
:
Bearbeitet durch Admin
Danke für die Antwort aber den Tutorial hilft nicht viel weil da kein beispiel über den Spanungsvergleich gibt
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
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
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
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
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
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!)
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.
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.
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.
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
@ 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!
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
Ich möchte einmal höflich auf meinen Beitrag hier Beitrag "Re: Spannungenvergleich mit atmega" hinweisen, in dem ich das Vorgehen skizziert habe.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.