Microansteuerung

Gast #136619
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
Gast #136620
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.
Gast #136624
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.
Gast #136625
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?
Gast #136627
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.
Gast #136628
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!?
Gast #136630
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?
Gast #136631
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.
Gast #136632
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.
Gast #136633
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!
Gast #136634
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.
Gast #136635
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.
Gast #136637
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 :-)
Gast #136638
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.
Gast #136642
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.
Gast #136643
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?????
Gast #136644
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.
Gast #136645
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.
Gast #136650
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren