Forum: Mikrocontroller und Digitale Elektronik mehrere Analoge Signale verwerten


von Christian D. (t1000hh)


Lesenswert?

Ich habe mal eine Frage zum ADC,
Ich möchte mit einem Ultraschall Sensor eine Entfernung messen und in 
verschiedenen Abständen die Werte verwerten, zusätzlich möchte ich mit 
Odometrie Geschwindigkeiten erfassen oder ggf Abstände messen. Da ich 
für beide einen Analog Digital Wandler benötige, wollte ich mal fragen 
ob man den für beides Gleichzeitig verwenden kann oder ob es sonst 
andere Möglichkeiten gibt? Es kommen wahrscheinlich noch mehr Funktionen 
dazu, die einen ADC benötigen werden.

vielen Dank für Zahlreiche Antworten
Gruß Chris

von Karl H. (kbuchegg)


Lesenswert?

Christian Dopatka schrieb:

> Odometrie Geschwindigkeiten erfassen oder ggf Abstände messen. Da ich
> für beide einen Analog Digital Wandler benötige, wollte ich mal fragen
> ob man den für beides Gleichzeitig verwenden kann oder ob es sonst
> andere Möglichkeiten gibt?

Auf einem AVR-µC?

Nein. der hat nur einen ADC, den man aber an mehrer Quellen nacheinander 
aufschalten kann. Du kannst also in rascher Folge jeweils eine Quelle 
ausmessen und dann zur nächsten Quelle übergehen.

von Christian D. (t1000hh)


Lesenswert?

also meinst du multitasking? weißt du in welchen Zeitraum sich das 
abspielen würde?? bei Ultraschall muss ja schnell  reagiert werden nehme 
ich mal an oder?

von holger (Gast)


Lesenswert?

>bei Ultraschall muss ja schnell  reagiert werden nehme
>ich mal an oder?

Davon kannst du ausgehen. Du kannst auch davon ausgehen
das das ganze noch viel zu schwer für dich ist.

von Christian D. (t1000hh)


Lesenswert?

Achso um noch mehr Infos zur Verfügung zu stellen,
Ich habe einen Atmega 16 mit der es es gemeistert werden soll ist es 
echt nur möglich einen Analog wert STETIG zu überwachen? oder sonst nur 
abwechselnd?
gibt es keine andere Lösung

von Michel (Gast)


Lesenswert?

Christian Dopatka schrieb:
> ... echt nur möglich einen Analog wert STETIG zu überwachen?

In der Digitalwelt gibt es kein "Stetig", sondern alles geht in Stufen 
so z.B. die Zeit (Stichwort Abtastrate/-intervall) und die Amplitude 
(Stichwort Auflösung, Quantisierungsrauschen). Die zeitliche Abtastung 
hält noch einige Eigenheiten bereit, wie z.B. das Shannon'sche 
Abtasttheorem und Aliasing-Effekte.

von Multi K. (multikulti)


Lesenswert?

Du hast immer noch nicht geschrieben was für ein Controler du 
verwendest. AVR's können Analogwerte aus verschiedenen Quellen 
auswerten. Der Atmaga8 z.b. hat 6 Pins an denen ein Analogwert angelegt 
werden kann, der dann vom ADC wandler nacheinander gewandelt werden 
kann.
Wann welcher Eingang gewandelt werden soll kannst du selbst bestimmen. 
Ob der ADC Wandler schnell genug ist für all die Aufgaben musst du dir 
vorher ausrechnen.
Ich weiß gar nicht ob der ADC generell schnell genug ist um Ultraschall 
sensoren auszuwerten.
Die Odometrieauswertung muss vielleicht auch nicht unbedingt über den 
ADC geschehen. Sicherlich benutzt du eine Lochscheibe oder Ähnliches. 
Mann könnte deren Impulse auch per Schwellwertschalter (Schmitttrigger) 
in für den Controller verwertbare Signale umwandeln. So sparst du dir 
eine menge Entwicklungsarbeit und Rechenzeit.
Wenn du dich noch nie mit einem ADC Wandler beschäftigt hast, geh die 
Sache Schritt für Schritt an. Versuch erstmal den ADC wandler überhaubt 
ans laufen zu bekommen und Analogwerte einzulesen. Wenn das klappt 
kannst du dich mit dem Multitasking beschäftigen. Das Datenblatt zu 
deinem Controller ist dafür unabdingbar.

Kann es sein das du dabei bist einen ASURO zu programmieren?

von Christian D. (t1000hh)


Lesenswert?

Steffen P. schrieb:

> Kann es sein das du dabei bist einen ASURO zu programmieren?

ja genau so ist es.

Also ich mache eine Fortbildung zum Techniker und meine Facharbeit soll 
sein den Asuro zu Erweitern, so dass Odometrie als auch Ultraschall und 
LCD Display zusammen Funktionieren. Ich möchte den Atmega8 durch eine 
zusätzliche Platine mit einen Atmega16 o.ä. ersetzen um mehr Speicher 
und I/O Pins zu erlangen. Die Ultraschallabstandsmessung Funktioniert, 
und wird im Buch "Mehr Spaß mit ASURO" genau beschrieben ebenso die 
Odometrie. Dazu wird jeweils der ADC benutzt. Ich bin mir nicht sicher 
ob es Zeitlich hin haut, wenn ich jeweils eine Funktion nach einander 
abarbeite oder ob es nötig ist beides Gleichzeitig zu tun...
eine überlegung war sonst noch einen Attiny13 über I²C die 
Ultraschallortung durchführen zu lassen und die Daten an den 
Hauptcontroller zu senden, oder ist dies völlig unnötig?

von Lehrmann M. (ubimbo)


Lesenswert?

Christian Dopatka schrieb:
> Die Ultraschallabstandsmessung Funktioniert,
> und wird im Buch "Mehr Spaß mit ASURO" genau beschrieben ebenso die
> Odometrie. Dazu wird jeweils der ADC benutzt. Ich bin mir nicht sicher
> ob es Zeitlich hin haut, wenn ich jeweils eine Funktion nach einander
> abarbeite oder ob es nötig ist beides Gleichzeitig zu tun...
> eine überlegung war sonst noch einen Attiny13 über I²C die
> Ultraschallortung durchführen zu lassen und die Daten an den
> Hauptcontroller zu senden, oder ist dies völlig unnötig?

In meinen Augen tatsächlich völlig unnötig. Ich schlage die Verwendung 
eines Komparators vor. Dessen Schaltschwelle ist entsprechend durch 
Beschaltung zu realisieren. Dann ist die Sache ganz simpel. Komparator 
als Interrupt aufschalten, den ersten Burst ignorieren (Sendeburst), der 
zweite sollte dan das Echo sein. Nun nur noch die Zeit zwischen zwei 
Komparatorinterrupts messen und verrechnen - fertig ist die Odometrie.
Durch das fehlende pollen (abfragen) der Port oder ADC spart man sich 
gewaltig Resourcen.

von Christian D. (t1000hh)


Lesenswert?

Ok wie ich gerade den Unterlagen entnehmen konnte, habe ich mich wohl 
falsch Ausgedrückt entschuldige der Fehler.

Es sieht nun wie folgt aus:

Die Ultraschallortung erfolgt mit einen Komparator und es wird der 
verstärkte empfangene Wert mit UCC verglichen. Um dies durch zu führen 
muss der AD-Wandler deaktiviert werden.
Ultraschall wird benötigt um gegenstände, die vor dem ASURO sich 
befinden erkannt werden und die Fahrt rechtzeitig zu stoppen. Dies soll 
auf die neue Platine und ist noch individuell änderbar.

Um aber nun die Odometrie der Räder weiterhin messen zu können (wird 
benötigt, da eine bestimmte Fläche abgefahren werden soll) muss der 
AD-Wandler weiterhin aktiv bleiben, um den Schwellwert von Hell und 
Dunkel unterscheiden zu können(wird vom AD-Wandler gemssen). Die 
Odometrie ist fest auf der Platine integriert und lässt sich nur sehr 
schwer ändern.

Nun ist die Frage wohl deutlicheer, ob ich für den Ultraschall nicht 
doch einen externen kleinen  Controller verwenden soll.

oder gibt es doch andere Lösungen die einfacher sind?

von Multi K. (multikulti)


Lesenswert?

Also vorweg mal ein kleinen Tipp. Ich hab die Odometrie vom ASURO auch 
schon programmiert. Das problem ist dabei das die fotodiode komplett 
offen liegt. Das heißt sie ist sehr empfindlich gegen störquellen. 
Einfacher wird es wenn man sie komplett abschirmt, also ein gehäuse 
drumherum baut. So ist man gegen sich änderne betriebsverhältnisse 
gewapnet.

Christian Dopatka schrieb:
> Nun ist die Frage wohl deutlicheer, ob ich für den Ultraschall nicht
> doch einen externen kleinen  Controller verwenden soll.

Das problem beim ASURO ist, das sämmtliche kommunikations pinns bereits 
belegt sind.
Das TWI hängt zum teil an der Tastenauswertung.
Der USART wird zur kommunikation mit dem PC genutzt. Trozdem währe das 
vielleicht ein Ansatzpunkt. Ich weiß nicht mehr genau wie die 
Kommunikation mit dem PC funktioniert. Jedenfalls sollte es möglich sein 
die Funktion entweder umschaltbar zu machen, also wahlweise mit PC oder 
mit controller zu qwatschen, oder aber den "Multi-processor 
Communication Mode" zu nutzen. Dabei bekommt jeder Teilnehmer eine 
Adresse und fängt erst an den USART zu beachten wenn er angesprochen 
wird. Da musst du dich mal schlau machen ob die kommunikation zum PC das 
zu lässt.
Schonmal mit USART gearbeitet?
Ein zusätzlicher Controller würde wahrscheinlich viele weitere 
Möglichkeiten öffnen. Eine einfache I/O erweiterung könntest du dann 
über den TWI Bus machen.

von Christian D. (t1000hh)


Lesenswert?

erstmal danke für ne ANtwort :)
Steffen P. schrieb:

> Das problem beim ASURO ist, das sämmtliche kommunikations pinns bereits
> belegt sind.
> Das TWI hängt zum teil an der Tastenauswertung.
> Der USART wird zur kommunikation mit dem PC genutzt. Trozdem währe das
> vielleicht ein Ansatzpunkt.

Also ich möchte den Atmega 8 mit ausbauen, über den Sockel soll dann 
eine Verbindung ( mit Drähten ) zu einer darüber gebauten Platine 
erfolgen. da will ich dann einen Atmega16 oder vergleichbares einsetzen. 
Somit habe ich dann mehr I/Os und mehr Flashspeicher. Soweit die 
Theorie, woran meine Planung noch scheitert ist eben das der AD-Wandler 
gebraucht wird und bei der Ultraschall geschichte eben nicht. und da 
fällt mir Momentan nur ein das ich einen zusätzlichen kleinen Controller 
nehme und da passt ja der Attiny13.

Gibt es sonst keine Alternative denke ich zu kompliziert? oder genau 
richtig?

von Multi K. (multikulti)


Lesenswert?

Naja, die Bandbreite zwischen Falsch und Richtig ist recht groß^^ Viele 
Wege führen nach Rom. Deine Variante währe natürlich auch möglich. Es 
würde einem sogar die möglichkeit geben grundlegende Änderungen zu 
machen. Beispielsweise könntest du dann die Odometer Auswertung dann wie 
gesagt nicht direkt auf den ADC Wandler führen, sondern das Signal mit 
einem Schwellwertschalter direkt in ein verwertbares 5V Rechteck Signal 
wandeln. Das kannste dann z.b. an nen interrupt Pin anschließen. So 
sparst du dir die wandelei und damit eine menge Entwicklungsaufwand und 
Rechenzeit. Find ich sinvoller. Auch die gesammte übrige Peripherie 
kannst du nach belieben neu anschließen.

Wenn du aber einen ganz anderen controller verwenden willst hast du 
folgende Nachteile:
-Du brauchst einen anderen Compiler, kannst also nicht mehr den beim 
Asuro beigelegten verwenden
-Du kannst die vorgefertigten Funktionen nicht mehr verwenden, bzw. 
musst sie umschreiben.
-Du müsstest den Bootloader neu aufspielen (wenn man da so überhaubt 
drannkommt) oder umschreiben.
-Es währe etwas Verdrahtungsaufwand.

Das erfordert schon etwas an Kenntnissen. Wenn dein Asuro dein erstes 
Projekt ist, bleib besser erstmal beim Atmega8.

Übrigens nochmal: wenn du den TWI (I²C) bus zur verfügung hast, kannst 
du damit deine I/O Ports beliebig erweitern. Es gibt dafür entsprechende 
Bauteile.

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.