Forum: Mikrocontroller und Digitale Elektronik Microansteuerung


von Rolf Blacer (Gast)


Lesenswert?

ICh habe ein Verständnisproblem:

Da hier viele Profis schreiben...bitte helft mir.

ICh habe folgenden Schaltplan gefunden...es geht um die Schaltung vom
Micro bis zum Operationsverstärker...

http://www.icplan.de/gisch.gif

Also das Micro wird über einen Spannungsteiler an VCC angeschlossen...
- zwischen diesen Widerständen geht ein Kondensator (C6) gegen
  Masse...WARUM, was bewirkt dieser???

- dann kommt ein Hochpass (C5 & R6) um Gleichanteil wegzufiltern (???)
 das ganze wird dann über R5 nochmal mit VCC verbunden...das verstehe
 ich überhaupt nicht.

Für Hilfe bin ich sehr Dankbar

mfg Rolf

von Rufus T. Firefly (Gast)


Lesenswert?

Das ist eine Stromversorgung für eine Electret-Mikrophonkapsel. In der
sitzt ein kleiner Verstärker, der mit Gleichspannung versorgt werden
will. Der Kondensator koppelt diese "Phantomspeisung" aus.

Wird ein dynamisches Mikrophon verwendet, muss diese Schaltung
tunlichst geändert werden.

von Rolf Blacer (Gast)


Lesenswert?

Tut mir leid...hab das nicht so richtig verstanden...

du meinsten den Kondensator zwischen R3 und R2, also C6?

der kommt doch schon "vor" dem Micro!??

von Hubert (Gast)


Lesenswert?

C5 koppelt aus, C6 unterdrückt Störungen auf der Versorgungsspannung des
Mikros

von Rolf Blacer (Gast)


Lesenswert?

Macht nicht der 7805 konstant 5V? warum sind dann noch Störungen?

UND WARUM ist nach dem HOCHPASS nochmal eine Verbindung zu VCC

von Hubert (Gast)


Lesenswert?

Der Verstärker im Mikro ist sehr empfindlich, er würde auch minimalste
Störungen mitverstärken.
C5 ist nicht als Hochpass gedacht sondern ist für die Nf-Auskopplung,
R2 ist dazu der Arbeitswiderstand.
R5 / R6 bilden einen Spannungsteiler für den OP etwa in der Mitte der
Betriebsspannung um eine Aussteuerung durch das Nf-Signal in beiden
Richtungen zu gewährleisten.

von Rolf Blacer (Gast)


Lesenswert?

Vielen Dank...

ist das mit r5/ r6 wichtig?

Ich möchte dann das Signal in ein Rechteckimpuls umwandeln... von 0 bis
5V?

wie mach ich das...Verstärken OK und dann Schmitttrigger oder???

Ich brauch das ganze nochmal Invertiert...wie kann ich das machen?

von Hubert (Gast)


Lesenswert?

Nach der Schaltung nach sollte nach dem 2. OP ohnehin was
rechteckförmiges herauskommen, dann einen Schmittrigger und wenn noch
notwendig, den in invertierender Ausführung.

von AxelR. (Gast)


Lesenswert?

IC3B arbeitet als Komparator, obwohl der TL062 dafür ja eigentlich nicht
gebaut ist. Der macht dir ab einer bestimmten Lautstärke am Mikrofon
hinten Rechteckimpulse, die deiner Eingangsfrequenz entsprechen und
(fast) über die gesamte Betriebsspannung reichen. So ca.0-5V. Wird
sicher kein toller rechteck sein (wegens dem TL062), aber für den
Controller, der in dieser Schaltung hinten drann hängt, geht das i.O.
Wenn Du es invertiert brauchst, musst Du nur PIN5 und PIN6 vom IC3B
tauschen.
AxelR.

von Rolf Blacer (Gast)


Lesenswert?

Ich möchte ja ein Stimmgerät bauen...

und somit muss ich die Frequenz des Signals messen...wollte das über
die bestimmung der Periodendauer machen...

wenn das Rechteck nicht gut ist, kann ich da auch nicht gut messen??

ich habe einen LM324 und 4050 Schmitttrigger...aber das invertierte
bekomme ich nicht hin... wie kann ich das anstellen...es darf ja auch
kein Laufzeitunterschied entstehen!?

von AxelR. (Gast)


Lesenswert?

Wofür musste das denn dann nochaml invertieren?
Häng das da drann und gut. Sollte auf Anhieb gehen, der Atmel hat doch
auch schmitt trigger Eingänge.
Axel

von Rolf Blacer (Gast)


Lesenswert?

Ich will die Periodendauer messen... der Atmel zählt über Timer wenn
H-Pegel anliegt. Um also den LOW Pegel zu messen muss ich das Signal
invertieren.

Welche Eingänge sind Schmitttrigger eingänge?

von Hubert (Gast)


Lesenswert?

Hast du das Signal schon mal mit einem Oszi angeschaut? Es ist fast
symetrisch und wird sich mit invertieren nicht ändern. Wenn du ein
Stimmgerät bauen willst werden da noch andere Probleme auf dich
zukommen wie harmonische Oberwellen, schwebungen usw.

von AxelR. (Gast)


Lesenswert?

Dann schreibst du das Programm eben so um, dass der Atmel zählt, wenn
L-Pegel anliegt.
Ausserdem ist es so, wie Hubert sagt: das Signal ist symmetrisch, also
egal wie. Zur Not kannste ja noch einen Transistor hinterschaltn.
Emitter an Masse, basis über 10K an den Ausgang und Kollektor über 1K
nach VCC. Am Kollektor greifst Du das Signal wieder ab.

von Rolf Blacer (Gast)


Lesenswert?

Das signal ist nicht symmetrisch...nur wenn es laut genug ist...ich habs
mit Oszi angeschaut...
  ---       ---                          --| |-------| |----
  | |       | |                            | |       | |
--| |-------| |--------.... ich will nun   ---       ---

die Oberschwigungen werden doch mit einem Tiefpass herausgefiltert?

Ich kann das Programm nicht umschreiben... der Timer 0 ist so
programmiert, dass er bei H Pegel zählt!

von AxelR. (Gast)


Lesenswert?

Dann musst du den Umschaltpunkt des Komparators etwas runtersetzen, bzw.
dir das veratärkte Signal vor dem Komparator mal ansehen und mit dem
Spannungsteiler, welcher am Eingang dieses auf halbe Betriebsspannung
zieht, experimentieren.
kannst aber auch einfach den Transistor hernehmen, wie ich oben
beschrieb.Dann sieht das Signal genau so aus. Du musst aber sowieso
beide Halbwellen zählen, oder bei steigender Flanke den Timer starten
und bei der nächsten steigenden Flanke den Timer auslesen. Dann ist es
egal. Siehe obige Skizze aus deinem Post.
Die Oberschwingungen werden mit einem Tiefpass herausgefiltert? Deine
Rechteckimpulse am Timer0 <->Oberwellenhaltig[Rechteck].
Wie sieht denn die Software aus?
Zum Messen der Periodendauer muss dein Timer nunmal bei steigender oder
fallender Flanke gestartet werden und beim nächsten mal gestoppt
werden.
Die intern vergangenen/aufgelaufenen Ticks ergeben nun deine
PeriodenDauer. 1/Ticks=Frequenz. Sollte ja klar sein.
Du kannst annnersum auch das TCCR0 Register auf externClock stellen und
genau eine Sekunde warten und zählst dann die aufgelaufenen Impulse.
Wäre dann die andere Variante. Kann ich aber nichts zu sagen, weil ich
deine Software nicht kenne. Wollte nur deine Aussage "Ich kann das
Programm nicht umschreiben... der Timer 0 ist so
programmiert, dass er bei H Pegel zählt!" etwas relativieren, bzw.
aufzeigen, dass es sehr wohl möglich ist, die Software den eigenen
Bedürfnissen anzupassen.
AxelR.

von Hubert (Gast)


Lesenswert?

Tausche mal die Eingänge PB0 und PB1. Eventuell auch noch R10 / R11
tauschen, mit denen wird der Schaltpegel festgelegt. Damit würde die
Pegelauswertung im Kontroller invertiert. Ich habe zwar mit dem
Analog-Komparator noch nicht gearbeitet, aber nach meinem Verständnis
sollte es das sein. Zumindest nach dem Datenblatt.

von Hubert (Gast)


Lesenswert?

Es müsste aber auch über die Software gehen, nach beschreibung kann man
den Interrupt einstellen. The user can select interrupt triggering on
comparator output rise, fall or toggle.

von Rolf Blacer (Gast)


Lesenswert?

Ich habe diesen Schaltplan nicht nachgebaut...meine ist halt anders und
ich wusste nicht was nun besser ist. ich werde diese aber
nachbauen...jedenfalls bis vor den OP.

hab auch nen anderen Mikrokontroller AT98S8252...

ich wollte hat beide Pegel einer Periode auslesen...scheint aber
schwierig zu sein.

Ich werde das jetzt probieren von fallender nach fallender Flanke zu
messen.

mal sehn.

Vielen Dank aber für eure Hilfe... bis bald :-)

von AxelR. (Gast)


Lesenswert?

Habe ich was verpasst? Ach ist ja ein 2313... ICh war aufn Mega8 aus.
Nun, wie es beim 90S2313 beschaltet ist, muss ich erst nachlesen. Das
ist zu lange her.
Scheint sich tatsächlich um den Analog Comparator zu handeln. Warum
baust Du die Schaltung nicht so auf, wie sie publiziert wurde???
Naja, geht mich ja nischt an.
R5/R6 und R8/R9 kannst Du zum Einstellen der Symmetrie deines
Mikrofonsignals heranziehen, falls Du die Schaltung in einer eigenen
Schaltung verwenden willst. Sonst, wie Hubert richtig sagte, mit
R10/R11 lässt sich die Ansprechschwelle des Analogkomparators im 2313
einstellen, wobei mir dann die Verwendung des Diskreten Komparators
IC3B widersinnig erscheint. Ich frag' nochmals, wofür du ein
Symmetrisches Signal brauchst. Um die Frequenz auszurechen, brauchst Du
die Periodendauer. Die ist die Summe aus T_on+T_off. Musst also sowieso
etweder beide Zustände messen, oder NUR bei einer (z.B. steigender)
Flanke. Dann isses doch ziemlich egal, ob dein Signal symmetrisch ist,
oder nicht.

Ich kann mich jetzt nicht in den 2313 reindenken, muss ich erst mal ein
Datenblatt ziehen. Poste mal die Quelle, dann können wir das ummodeln.

AxelR.

von AxelR. (Gast)


Lesenswert?

war ich zu langsam

von AxelR. (Gast)


Lesenswert?

....
hab auch nen anderen Mikrokontroller AT98S8252...
....
Da muss ich mich ausklinken, habe ich noch nie was mit gemacht.
AxelR.

von Rolf Blacer (Gast)


Lesenswert?

ich hab einen AT89S8252... !!!!!!!!!!!

brauch kein Periodisches Signal! will ja nur die Periodendauer (wie du
sagst Toff + Ton) Ton hab ich... nur Toff nicht!

von Hubert (Gast)


Lesenswert?

Ich glaube du hast da wirklich ein Verständnisproblem. Du hast um 10:40
aufgezeichnet wie dein Signal aussieht. Die kurze Zeit ist Zeit1 die
lange Zeit2. Die Frequenz des Tons ist aber Zeit1 + Zeit2 und die
ändert sich nicht auch wenn du das Signal invertierst und ob du von
steigender zu steigender Flanke oder von fallender zu fallender Flanke
misst ist auch egal.

von Rolf Blacer (Gast)


Lesenswert?

Mein Problem ist das ich die Zeit, wo 0 Pegel anliegt nicht messen
kann...weil der Mikrokontroller nur bei H Pegel die Zeit misst.

Ich wollt jetzt von fallender zu fallender Flanke messen...

Meine Gedanken:
  - Bei fallender Flanke -> Interrupt wird ausgelöst
  - in der Interrupt Service Routine muss ich den Timer-Wert auslesen
    und den Timer zurückstzen. der Timer soll aber schon die nächste
    Zeit Messen...

--> Das auslesen und zurücksetzen braucht Zeit und verfälscht doch
somit das Ergebnis... ODER?????

von Hubert (Gast)


Lesenswert?

Das ist so minimal das der Quarzfehler warscheinlich grösser ist, wenn
du willst und überhaupt möglich ist kannst du einen Korrekturwert
berücksichtigen.
Ich würde aber mal schaun das es grundsätzlich funktioniert und dann
erst so kleine Details korrigieren.

von AxelR. (Gast)


Lesenswert?

Hmm, nicht ganz.
Fallende Flanke ->int
timer auf Null
Fallende Flanke ->int
int sperren
Timer auslesen,
umrechnen,
Frequenz aus der Tabelle der Note zuordnen,
Note anzeigen
int zurücksetzen
Fallende Flanke ->int
timer auf NULL
weiter wie oben.
Du darfst schon nach jeder Periode erst mal in Ruhe den Kram erledigen,
den Du zu erledigen hast.
Erst wenn Du fertig bist, fängst Du wieder an, die Periodendauer zu
berechnen. Deine GitarrenSaite wird ja wohl länger schwingen, als eine
Priodenmessung + Datenberarbeitung dauert. Wenn Du nun nur alle 10
Schwingungen messen kannst, weil Du zwischendurch deinen
administrativen Kram erledigst, ändert das ja nichts an deinem
Messwert.
Musst nur das Int Flag löschen, bevor Du den Interrupt wieder
freigibts, damit evtl. aufgelaufene Interrupts nicht sofort ausgeführt
werden. Du musst ja synchron bleiben mit deiner Messung.

Ich habe sowas schon mal für PC-Lüfter programmiert. Da habe ich auch
die Periodendauer des Tachosignals verwendet und angezeigt. Das sogar
für acht Signale gleichzeitig. Die Werte habe ich dann auf einem
Display anzeigen lassen und auf der UART ausgegeben.

von edgar p (Gast)


Lesenswert?

Rolf,

oft ist es schwierig sich vorzustellen,wie schnell ein MC ist.
....auslesen ruecksetzen...in einem husch.
Mach dir keine Sorge darum.

von Rolf Blacer (Gast)


Angehängte Dateien:

Lesenswert?

Hier mal mein Programm...misst erstmal nur die Periodendauer... werd es
heut abend mal testen... ob es auch stimmt!

von AxelR. (Gast)


Lesenswert?

haste schon probieren können, ich kenn mich mit dem Assembler nicht so
gut aus, schade
AxelR.

von Rolf Blacer (Gast)


Lesenswert?

Kennt sich denn jemand anders mit Assembler aus??

und kann sich das mal anschauen mein Programm?

Danke!

von Rolf Blacer (Gast)


Lesenswert?

jetzt ist mir noch eine Merkwürdigkeit aufgefallen...

Ich hab das Programm mit 1kHz ausprobiert...

Funktioniert eigentlich super...es gibt mir 1000 µs aus...

...aber ab und zu 1007...vieleicht aller 10 Messungen manchmal auch
häufiger ...aber immer nur 1007... hab dann ein bischen rumgespielt...
z.B. clr ex0 mal weggelassen ... dann hat es 993 ausgegeben...also ab
und zu...

wie kann das kommen? Wie beseitige ich den Fehler?

von Rolf Blacer (Gast)


Lesenswert?

Kann mir denn mal jemand helfen???

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.