Forum: Mikrocontroller und Digitale Elektronik Mit dem Mikrocontrollerboard AT90CAN128 eine Frequenz messen


von Sebastian H. (bastie)


Lesenswert?

Hallo Liebe User,

ich habe mich gerade eben in dem Forum angemeldet, da ich hier viele 
Informationen über Mikrocontroller, allerdings keine Antwort zu meinem 
eigentlichen Problem gefunden habe.

Ich habe in der Schule BBS2 Emden eine Projektarbeit am laufen in der 
wir eine Sortiermaschine für Bälle bauen sollen. Wir haben die 
Projektarbeit in 4 Segmente aufgeteilt: Sortieren nach Farbe, 
leitfährigkeit, größe und geschwindigkeit. Meine Gruppe und ich haben 
das Segment Farbe übernommen.

Wir haben uns für den Farb-Licht-/Frequenz-Wandler Taos TCS 3200 von 
Conrad.de entschieden. Wir haben den Sensor auch bereit an eine Platine 
gelötet und der Sensor ist anschlussbereit. Zwei Eingänge und einen 
Ausgang haben wir nun an unser Baord geschlossen: Die beiden Eingänge 
stellen die Farben da nenne wir sie S1 und S2. Wenn S1 und S2 auf high 
(sprich 1) geschaltet sind, misst er die Frequenz für die Farbe Grün. 
Allerdings sind wir nun auf ein Problem gestoßen:

Wir haben auch nach einer langen internetsuche nicht herrausgefunden wie 
wir die Frequenz in unserem Board ausmessen. Wir bekommen die Frequenz 
am Ausgang OUT als Eingang in unser Board, welcher als PORT A PINA03 
definiert wurde. Jetzt haben wir zwar den Port am Board, wissen aber 
dennoch nicht wie wir mithilfe des Ports die Frequenz im Programm ( C ) 
messen und auswerten können um zu sehen welche Farbe diese Freuqnz 
darstellt. Wenn wir für S1 und S2 ein low setzten verändert sich der 
Frequenzwert, da wir nun auf die Farbe Rot geschaltet haben.

Hier noch eine Tabelle der Farboptionen:

S1     S2
L       L     RED
L       H     BLUE
H       H     GREEN

Wisst ihr wie wir die Frequenz am besten mit unserem Board ausmessen 
können?

Danke im vorraus für die Hile! :)

von Peter D. (peda)


Lesenswert?

Jede Meßaufgabe braucht erstmal Angaben:
- Minimalwert
- Maximalwert
- Auflösung
- Genauigkeit
- Meßrate

von Josef (Gast)


Lesenswert?

Zuerst mal, ich kenn den Sensor nicht und auch mit
Atmel hab ich schon laenger nichts mehr gemacht.
Also ist das folgende mit Vorsicht zu geniessen.
---------------------------------------------------

Der Sensor liefert ein TTL Rechtecksignal.
Der Frequenzbereich ist durch S0,S1 einstellbar.

Im Datenblatt des MC ueberprueft ihr ob der Eingangspin
das TTL Signal vertraegt. (Bei 5V Versorung sollte er das).

Der Eingangspin des MC wird so konfiguriert dass er bei fallender
Flanke einen Interrupt ausloest.
Ueber den Timer/Counter wird die Zeit bestimmt, die zwischen zwei
Interruptaufrufen vergangen ist.

Das macht man am besten so ca. 10 bis 100 mal und bildet einene 
Mittelwert.

Daraus kann man dann die Frequenz berechnen.

Das waere eine Moeglichkeit.

Gruss Josef

von Ulrich (Gast)


Lesenswert?

Eine gute Lösung für eine Frequenzmessung wäre es die Input Capture 
Funktion des µC zur Zeitmessung nutzen. Das sollte bei dem µC bis zu 
etwa Taktfrequenz / 50 gehen, je nach Programm. Für mehr Auflösung 
könnte man ggf. auch über mehr als eine Periode die Zeit messen. Für 
eine Unterdrückung von 100 Hz Störungen aus dem Hintergrundlicht wäre 
ggf. eine gesamte Messzeit um 10 ms oder ein Vielfaches davon sinnvoll, 
die Zahl der Perioden könnte man dann anpassen.

Falls der Eingang fest ist, könnte man ggf. den Analogen Komparator und 
MUC des ADs nutzen um auch den Pin für Input Capture zu nutzen.

Wie das etwa aussieht, sieht man hier:
http://www.rn-wissen.de/index.php/Timer/Counter_(Avr)#Input_Capture

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.