Lärmampel von erfinderjo

OP #3374984
Lesenswert?

Liebe Forumgemeinde,

mein nächstes Projekt soll eine "Lärmampel" sein.
Die Idee stammt von erfinderjo:
http://www.erfinderjo.de/html/larmampel.html


Der Schaltplan ist teilweise unleserlich und erfinderjo kann ich nicht 
erreichen. Habe es nach bestem Wissen und Gewissen versucht und 
Teilweise herausgefunden, Schaltplan folg.

Könnte mir jemand helfen alle Bauteile zu identifizieren?

Frundliche Grüße
basti
Angehängte Dateien:
Gast #3375038
Lesenswert?

Quatsch, das ist eindeutig ein Quarz mit den obligatorischen 
Kondensatoren dazu (siehe Datenblatt). Nur wieviel Mhz wäre natürlich 
gut zu wissen. Wenn man die Frequenz hat, kann man am Datenblatt 
ablesen, welche Kondensatoren empfohlen werden.

Am 7805 Spannungsregler fehlt eingangsseitig der 330nF Kondensator. 
Ebenso sehe ich keinen Abblockkondensator (z.B. 100nF) an der 
Stromversorgung des Mikrocontrollers. Denn der andere beim 
Spannungsregler gehört ja auch dort hin (ganz Nahe beim 
Spannungsregler).

Beim 7815 fehlen kleine Kondensatoren an beiden Seiten. Siehe 
Datenblatt!
#3375042
Lesenswert?

Stefan schrieb:
> Quatsch, das ist eindeutig ein Quarz mit den obligatorischen
> Kondensatoren dazu (siehe Datenblatt). Nur wieviel Mhz wäre natürlich
> gut zu wissen.

Da hilft dann das BASCOM Programm weiter
1
$crystal = 8000000

Also 8Mhz

Aber: wo siehst du da einen Quarz?
Pins 20, 21, und 22 sind GND, AREF und AVcc
-> 100nF

Am M8 wäre ein Quarz an den Pins 9 und 10
Gast #3375045
Lesenswert?

Mir fällt nochwas auf: Den Mikrofon-Verstärker hätte man auch mit einem 
simplen Transistor aufbauen können. Wichtiger scheint mir allerdings 
eine Entstörung der Speisung des Mikrofons, sonst kommt am Ausgang des 
OP-Amps die Störung der 5V Spannungsversorgung um (bis zu) Faktor 10 
Verstärkt wieder raus.
1
       470 Ohm    ZD 2,7V
2
+5V o---[===]---+--|<|------| GND
3
                |
4
                |   10µF
5
                +----||-----|
6
                |
7
                |             Mikrofon
8
                +---[===]---+---(*)--------|
9
                      1k    | 
10
                            |
11
                         Zum Verstärker
Gast #3375051
Lesenswert?

> Aber: wo siehst du da einen Quarz?
> Pins 20, 21, und 22 sind GND, AREF und AVcc

Oh, dann kann kein Quarz sein.
Ach da ist ja mein vermisster Abblockkondensator für die 
Stromversorgung!

Ich würde auch für beide 100nF nehmen.
OP #3375134
Lesenswert?

Ich habe die Schaltung, so wie sie abgebildet ist dummer weise schon auf 
eine Platine gelötet.

Den Mega habe ich auch schon gebrannt.

Folgendes Problem habe ich:

Display zeigt:

"Programm?        "
"HA-Hilfe Kantine "

verschwindet dann nach einigen Sekunden und taucht nach einigen weiteren 
Sekunden wider auf. Wenn ich einen der beiden Taster drücke erscheint 
auch der jeweilige Text, hat aber keinen Einfluss auf das Verschwinden, 
passiert weiterhin.

Laut Quellcode kann das nicht sein.
Ich vermute es handelt sich hierbei um einen Hardwarefehler meinerseits.

Auf dem Foto erkennt man, das ich anstelle der BUZ21 die IRLZ34N 
genommen habe und dafür die Vorwiderstände streichen konnte. Die 
verbauten Widerstände sind für die LED'S.


1
Cursor Off                                                  'Startanzeige zum Wählen eines Parameterrezeptes:
2
Locate 1 , 1
3
Lcd "Programm?        "
4
Locate 2 , 1
5
Lcd "HA-Hilfe Kantine "
6
Do
7
If Pinc.4 = 1 Then
8
 Prog = 1
9
 Locate 1 , 1
10
 Lcd "                 "
11
 Locate 2 , 1
12
 Lcd "HA-Hilfe ist an! "
13
 Wait 1
14
 Reset Watchdog
15
 Wait 1
16
 Reset Watchdog
17
 Goto Parameter
18
End If
19

20
If Pinc.3 = 1 Then
21
 Prog = 2
22
 Locate 1 , 1
23
 Lcd "                "
24
 Locate 2 , 1
25
 Lcd "Kantine ist an! "
26
 Wait 1
27
 Reset Watchdog
28
 Wait 1
29
 Reset Watchdog
30
 Goto Parameter
31
End If
32
Waitms 300
33
Reset Watchdog
34
Loop
Angehängte Dateien:
Gast #3375446
Lesenswert?

Ist nur ein Teil des Programms, da kann Dir jetzt noch keiner helfen.
> GOTO Parameter ' was passiert da ?
> loop ' und weiter ?


***
- Mess mal die 5Volt.
- Brechen die zusammen, wenn das Display "aus" geht ?
- Wird der 7805 heiß ?

-> such dann mal nach einem Kurzschluß.
OP #3375946
Lesenswert?

Guten Morgen,

winne schrieb:
> Ist nur ein Teil des Programms, da kann Dir jetzt noch keiner helfen.
>> GOTO Parameter ' was passiert da ?
>> loop ' und weiter ?
>
> ***
> - Mess mal die 5Volt.
> - Brechen die zusammen, wenn das Display "aus" geht ?
> - Wird der 7805 heiß ?
>
> -> such dann mal nach einem Kurzschluß.

Der 7805 wird nicht heiß, da kaum ein Stromfluss vorhanden ist. Nur ca. 
10mA.
Die 5V am Display brechen leider auch nicht zusammen.

Ich habe es auf einem Exp. nachgebaut, und Schrittweise zurückgebaut, 
bis nur noch die Standartbeschaltung und das Display übrig waren.

Der Fehler trat weiterhin auf.

Habe dann ein Testprogramm geschrieben, welches dann auch reibungslos 
funktioniert hat.

Muss also definitiv ein Softwareproblem sein!!

Werde heute nachmittag dann mal den Watchdog rausschmeißen.
OP #3377487
Lesenswert?

Rene Zimmermann schrieb:
> Mach doch mal ein minimal Programm rein:
> Cursor Off
> Locate 1 , 1
> Lcd "Programm?        "
> Locate 2 , 1
> Lcd "HA-Hilfe Kantine "
> Do
> Reset Watchdog
> Loop

Guten Tag,

ich habe jetzt folgendes probiert:

1
$regfile = "m8def.dat"
2

3
$crystal = 8000000
4
$hwstack = 100
5
$swstack = 100
6
$framesize = 100
7

8
Config Pinc.2 = Input                                       'Taster - (T1)
9
Config Pinc.3 = Input                                       'Taster SET / Hauptseite (T2)
10
Config Pinc.4 = Input                                       'Taster Seite vor (T3)
11
Config Pinc.5 = Input                                       'Taster + (T4)
12

13
Config Pind.6 = Output                                      'grün
14
Config Pind.7 = Output                                      'gelb
15
Config Pinb.0 = Output                                      'rot
16
Config Pinb.1 = Output
17

18

19
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
20
Config Lcd = 16 * 2
21

22
Initlcd
23

24
Cls
25

26
Config Adc = Single , Prescaler = Auto , Reference = Internal
27
Config Watchdog = 2048
28
Start Watchdog
29

30
Cursor Off
31
Locate 1 , 1
32
Lcd "Programm?        "
33
Locate 2 , 1
34
Lcd "HA-Hilfe Kantine "
35
Do
36
Reset Watchdog
37
Loop


Die Anzeige zeigt den Text fehlerfrei an!!!!
OP #3377489
Lesenswert?

winne schrieb:
> Hast Du ein CLS an der falschen Stelle zu viel ?

Wie meinst du das genau??

PS:

Es kann dann ja nur an diesem Codeschnipsel liegen:
1
If Pinc.4 = 1 Then
2
 Prog = 1
3
 Locate 1 , 1
4
 Lcd "                 "
5
 Locate 2 , 1
6
 Lcd "HA-Hilfe ist an! "
7
 Wait 1
8
 Reset Watchdog
9
 Wait 1
10
 Reset Watchdog
11
 Goto Parameter
12
End If
13

14
If Pinc.3 = 1 Then
15
 Prog = 2
16
 Locate 1 , 1
17
 Lcd "                "
18
 Locate 2 , 1
19
 Lcd "Kantine ist an! "
20
 Wait 1
21
 Reset Watchdog
22
 Wait 1
23
 Reset Watchdog
24
 Goto Parameter
25
End If
26

27
Waitms 300
Gast #3378201
Lesenswert?

>winne schrieb:
>> Hast Du ein CLS an der falschen Stelle zu viel ?

>Wie meinst du das genau??

Moin,
also das Fehlerbild:

> Display zeigt:
>"Programm?        "
>"HA-Hilfe Kantine "
>verschwindet dann nach einigen Sekunden und taucht nach einigen weiteren
>Sekunden wider auf.

lässt vermuten, dass ein CLS (clear screen) des Displays ausgeführt 
wird.

Ein CLS hast Du ja auch in der Ini-Phase des Programms. (danach hatte 
ich gefragt)

Da das ganze regelmäßig stattfindet sieht es tatsächlich nach einem 
falsch ablaufenden Watchdog aus. Dein Programm wird wohl immer wieder 
neu gestartet.


@Sebastian
Weshalb hast Du den Watchdog im Programm ?

>GOTO Parameter
Was passiert hier ?
- Gibt es kein RETURN ?
- Verweilt das Programm zu lange im Unterprogramm "Parameter" ?
OP #3378234
Lesenswert?

winne schrieb:
> @Sebastian
> Weshalb hast Du den Watchdog im Programm ?

Hallo winne,
der code stammt von erfinderjo. Ich versuche ihn lediglich zum laufen zu 
bekommen.


spess53 schrieb:
> Hi
>
>>Ist dann die Funktion des Programmes noch gegeben?
>
> Du hast den Sinn eines Watchdogs nicht begriffen. Der Ersteller des
> Programm warscheinlich auch nicht.
>
> MfG Spess

das mag wohl sein, aber anstelle mir zu zeigen was ich nicht kann, würde 
ich hilfreiche Tipps viel lieber lesen.
Gast #3378261
Lesenswert?

Also im vollständigen Programm von erfinderjo kommen drei CLS vor.

1. Ini-bereich zum Start des Programms
2. If Pinc.3 = 1 Then                'Parameter in EEprom speichern
3. "Limits sind  ... gespeichert"

Schreibe anstelle CLS

LCD "CLS 1"
bzw.
LCD "CLS 2" und LCD "CLS 3"

Dann wirst du sehen welches CLS immer wieder ausgeführt wird
und Du kannst geziehlt den Fehler suchen.
OP #3378705
Lesenswert?

Stefan schrieb:
> Mir fällt nochwas auf: Den Mikrofon-Verstärker hätte man auch mit einem
> simplen Transistor aufbauen können. Wichtiger scheint mir allerdings
> eine Entstörung der Speisung des Mikrofons, sonst kommt am Ausgang des
> OP-Amps die Störung der 5V Spannungsversorgung um (bis zu) Faktor 10
> Verstärkt wieder raus.

Das Problem bemerke ich jetzt auch, bekomme keine klaren signale. wie 
würdest du die geräuschmessung aufbauen?
#3378731
Lesenswert?

Schmeiss doch endlich den Watchdog raus bzw. leg ihn mittels der Fuses 
still.

Mittels Watchdog noch vorhandene Programmfehler zu kaschieren hat eh 
keinen Sinn. Und ob du in einer derart elktrisch verseuchten Umgebung 
mit dieser Lärmampel operierst, so das du einen Watchdog brauchst, der 
den µC alle paar Wochen wieder aus dem elektrisch durch nebenan laufende 
Motoren hervorgerufenen Fehlerzustand rausholt, ist eine ganz andere 
Frage, die nur du beantworten kannst.

Auf jeden Fall: wenn das BASCOM Programm nach der üblichen BASCOM Manier 
gestrickt ist, und mit haufenweise WAIT gespickt ist, dann ist ein 
Watchdog genau das, was du eigentlich nicht willst.
Gast #3378755
Lesenswert?

@Sebastian
So nun weist Du was passiert.

- Der Watchdog-"Sprung" wird regelmaßig ausgelöst und das Programm neu 
gestartet.

- Ist bestimmt nicht Sinn des Programms

- der erste CLS ist auch nicht der Fehler. Er zeigt nur deutlicher, was 
das Programm macht.

Mann könnte sagen:
- das Programm führt den Befehl "Reset Watchdog" nicht rechtzeitig aus 
und startet deshalb neu.

Jetzt gibt es mehrere Möglichkeiten das Programm lauffähig zu machen.
1. Du lässt das Programm so und suchst nach der Ursache.
- LCD "FLAG123.." an der richtigen Stelle hilft manchmal weiter.
- z.B. Wait(s) verkleinern z.B. (hast Du ja schon probiert)
- Autor fragen

oder aber
2. Du schmeisst den Watchdog komplett raus und bringst das Programm dann 
anders zum laufen.

Ich weiß nicht was sich der Autor des Programms bei derartiger 
Watchdog-Programmierung gedacht hat. Will ich auch nicht ergründen.
Ich hätte das anders und ohne Watchdog programmiert.

Wenn du Spass am Fummeln hast, bringst du das ganze bestimmt zum Laufen.

Viel Spass ;-)
Gast #3378777
Lesenswert?

Hi

>Wenn du Spass am Fummeln hast, bringst du das ganze bestimmt zum Laufen.

Vielleicht läuft der ATMega8 auch nur einfach nicht mit den angegebenen 
8MHz. Dann wären die waits zu lang und der WD schlägt zu Recht zu.

>Ich hätte das anders und ohne Watchdog programmiert.

Nicht nur du.

MfG Spess
OP #3378812
Lesenswert?

Wiso wurde der ADS zwei mal gestartet? Sind das zwei verschiedene, einer 
für die Akkuspannung und einer für das Mikrofon?

Ganz am Anfang:
1
Config Adc = Single , Prescaler = Auto , Reference = Internal

Und einmal unter dem Punkt Messen:
1
Config Adc = Single , Prescaler = Auto , Reference = Avcc
2
Start Adc
Gast #3378815
Lesenswert?

Hi

>Aber die Taktrate ist doch im Programm angegeben.?

Den Takt stellst du über die Fuses ein.

Das '$crystal = 8000000' sagt Bascom lediglich, das der Controller damit 
läuft. Aber nicht umgedreht.

MfG Spess
Gast #3378816
Lesenswert?

Die Taktrate
>$crystal = 8000000
gibt nur dem Compiler an, mit welcher Frequenz später gearbeitet wird.

Du musst beim Programmieren darauf achten, dass die Fusebits auf 8MHz 
eingestellt sind.

Dazu musst Du deinen Programmer "fragen" ;-)
OP #3378821
Lesenswert?

Joe schrieb:
> Habe ich ca. 2005 auch schon gebaut.
>
> Siehe auch:
> The Safe Sound Indicator was developed over several years by the
> National Foundation for the Deaf from a concept by a 10-year-old New
> Plymouth girl, Jamie Fenton.
>
> bzw.:
> 
http://www.schoolnews.co.nz/news/292-news-in-brief/1278-traffic-lights-control-classroom-noise
>
> Der "Erfinder" hatte halt die Geschäftsidee.
>
> Joe

Sind Sie "erfinderjo"?
#3378923
Lesenswert?

Sebastian M. schrieb:

> Die Messung haut jetzt noch nicht hin. Habe ein MCE 101 verbaut, ist das
> ggf. ein problem?

Um eine Kalbrierung auf dein tatsächliches Mikrofon wirst du 
wahrscheinlich sowieso nicht umhinkommen.

> ich versuch mal ein kleines programm zu schreiben, was mir den pegel
> direkt anzeigt.

Hier
1
Config Adc = Single , Prescaler = Auto , Reference = Avcc
2
Start Adc
3
Ao = 0
4
U2 = 0
5
For N = 1 To 500                                            'Gleichspannungswert ermitteln
6
 A1 = Getadc(0)
7
 Ao = Ao + A1
8
Next N
9

10
For N = 1 To 10                                             'Bateriespannung messen
11
 U = Getadc(1)
12
 U2 = U2 + U
13
Next N
14

15
Ao = Ao / 500                                               'Gleichspannungswert Lärmpegel festlegen
16
Au = Ao
17
Ao = 0
18

19
Ub = U2 / 10
20
Ub = Ub / 50.583
21
Up = Ub - 11.9
22
Up = Up * 100                                               'Akkuzustand in %
23

24
For N = 1 To 2000                                           'Lärmmessung
25
 A1 = Getadc(0)
26
 A2 = A1
27
If A2 > Ao Then Ao = A2                                     'Ermitteln der Extremwerte
28
If A2 < Au Then Au = A2
29
Reset Watchdog
30
 Next N
31
Stop Adc
32
Amp = Ao - Au                                               'Lärmamplitude rechnen
33

34
 Return

ist in dem BASCOM Programm die zentrale Messroutine, wobei hier sowohl 
Mikrofon als auch Akku ausgemessen werden.

Die Mikrofonmessung ist der Teil hier
1
For N = 1 To 2000                                           'Lärmmessung
2
 A1 = Getadc(0)
3
 A2 = A1
4
If A2 > Ao Then Ao = A2                                     'Ermitteln der Extremwerte
5
If A2 < Au Then Au = A2
6
Reset Watchdog
7
 Next N
8
Stop Adc
9
Amp = Ao - Au                                               'Lärmamplitude rechnen

also einfach 2000 Messungen, wobei über alle Messungen der Maximalwert 
bzw. Minimalwert festgestellt wird. Die Amplitude (und damit die 
Lautstärke) ist dann einfach nur die Differenz zwischen Maximum und 
Minimum.

Die allersten Maximum bzw. Minimum Werte stellt der Autor eher 
umständlich fest, indem er am Anfang der Routine erst mal den Mittelwert 
aus 500 Messungen nimmt. Hätte man sich auch sparen können, weil er in 
der 2000-er Schleife den Wert ja dann sowieso korrigiert. Wenn er mit 
einem Wert von 0 für Ao gestartet wäre und einem Wert von 1024 für Au 
wäre es auf genau das gleiche rausgelaufen. Nur einfacher.

Was mich an dem Programm stört ist, dass fast alle Variablen SINGLE 
sind.

Also das (das ganze Programm) kriegst du mit Sicherheit besser hin. Da 
steckt nicht viel dahinter.
OP #3379566
Lesenswert?

winne schrieb:
> Hast du ein Oszi ? Wahrscheinlich nicht !

Nee, leider nicht. Bin nur ein gelegenheits Hobbybastler.

winne schrieb:
> Dann schließ doch mal probeweise einen Kopfhörer an den Ausgang des
> LM324 an.

Das wird bestimmt lustig, kann mir garnicht vorstellen, was dort kommen 
könnte...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ERSTMAL VIELEN DANK BIS HIER HIN, FÜR DIE GANZEN ANSÄTZE UND 
HILFESTELLUNGEN.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Ich würde vorschlagen, dass ich (wir) mich (uns) erstmal mit der 
Hardware auseinandersetze, damit wir dann später die Programme auch 
vernünftig testen können. Im Anhang der original Schaltplan so wie ich 
es lesen konnte, mit ersetzten Transistoren.

Die Spannungsstabilisierung für den Vorverstärker ändere ich später noch 
ab. Erkennt jemand irgendwelche Fehler, bzw. Problemquellen?

PS: Das Display funktioniert, war bloß zu faul es einzuzeichnen.

mfg
Angehängte Dateien:
Gast #3380034
Lesenswert?

@Sebastian
>PS: Das Display funktioniert, war bloß zu faul es einzuzeichnen.

Gewöhn Dir sowas gar nicht erst an. Das rächt sich später bei der 
Fehlersuche oder wenn Du eine Leiterplatte entflechten willst.


Einen Vorschlag zum Hardwaretesten hab ich auch noch.

Schreib ein neues einfaches Programm, was die Schalter abfragt.
Als Indikator kannst Du das dann auf dem Display anzeigen.
Und natürlich kannst Du so auch die Lampen und den Summer testen.

Frage den ADC(1) ab und lass dir die Betriebsspannung im Display 
anzeigen.

Display geht ja schon.

Wenn alles geht kannst Du dich auf den NF-Teil stürzen.
OP #3380271
Lesenswert?

winne schrieb:
> Einen Vorschlag zum Hardwaretesten hab ich auch noch.
>
> Schreib ein neues einfaches Programm, was die Schalter abfragt.
> Als Indikator kannst Du das dann auf dem Display anzeigen.
> Und natürlich kannst Du so auch die Lampen und den Summer testen.
>
> Frage den ADC(1) ab und lass dir die Betriebsspannung im Display
> anzeigen.

Ist denn die Schaltung soweit funktionstüchtig, damit ich die ADC werte 
überhaupt richtig reinbekomme?
#3380307
Lesenswert?

Sebastian M. schrieb:

> Ist denn die Schaltung soweit funktionstüchtig, damit ich die ADC werte
> überhaupt richtig reinbekomme?

Sebastian. Du musst lernen auch mal etwas selbst auszuprobieren bzw. dir 
zu überlegen, wie du etwas (hier: die Funktionstüchtigkeit) nachweisen 
kannst.

Du hast an dieser Stelle 2 Themenkreise.
Das eine ist der ADC selber. Den kannst du testen, indem du den ganzen 
Mikrofon-Verstärker Schnickschnack erst mal weglässt und mit einem Poti 
als Spannungsteiler an den ADC gehst. Drehst du am Poti, muss sich der 
angezeigte Wert ändern.
Den anderen Teil kannst du testen, indem du zb an den Verstärker 
anstelle des ADC erst mal einen Lautsprecher anhängst. OK, der wird 
furchtbar krächzen, aber das ist erst mal egal. für dich wichtig ist: 
verstärkt das Ding oder verstärkt es nicht? Und das sollte eigentlich 
mit einem Lautsprecher, aus dem das was das Mikrofon aufnimmt lauter 
rauskommt nachgewiesen sein.

Da du weißt, dass der ADC funktioniert (hast du ja mit dem Poti 
nachgewiesen), hängst du jetzt mal beide Teile zusammen und schreibst 
dir ein Programm, welches den ADC-Pegel dauern ausgibt. Und dann 
positionierst du das Mikrofon vor der Stereoanlage und berieselst es. 
Der angezeigte ADC Wert muss sich verändern. Tut er das, dann 
funktioniert das ganze wohl. Also baust du das Programm weiter aus: 
Minimalwert feststellen, maximalwert feststellen, etc. etc.

Aber löse dich von der Vorstellung, dass du hier etwas präsentierst, 
irgendjemand gibt dann sein ok dazu, du baust das auf und alles 
funktioniert aus dem Stand heraus. Gerade das macht ja das Basteln aus: 
das man auch selber experimentiert und Dinge ausprobiert. Wenn etwas 
nicht funktioniert, dann grenzt man eben sinnvoll den nicht 
funktionierenden Bereich ein und probiert was anderes. Bzw. umgekehrt 
nimmt man eine Schaltung in Schritten in Betrieb, wobei man sich eine 
Reihenfolge überlegt, so dass man mit möglichst einfachen und wenig 
komplexen Teilsystemen anfängt und dann ein System nach dem anderen dazu 
nimmt (und das wenn möglich eigenständig testet). Sinn der Sache ist es, 
nicht am Ende mit einer Schaltung dazustehen, die man in einem Rutsch 
aufgebaut hat, die nicht funktioniert und man hat keine Ahnung, wo man 
mit Fehlersuche anfangen kann.
Ja, auch Profis arbeiten nach so einem schrittweisen Schema. Der 
Schlüssel zum Erfolg ist es, nicht alles auf einmal haben zu wollen, 
sondern die Komplexität in den Griff zu kriegen, in dem man das 
Komplettsystem in beherrsch- und testbare Einzelteile zerlegt. Genau aus 
dem Grund fängt man auch nicht damit an, gleich mal eine Platine zu 
zeichnen, sondern das ganze zb auf einem Steckbrett auszuprobieren, oder 
die Schaltung auf Loch- oder Streifenrasterplatine in Schritten 
aufzubauen.
Gast #3380427
Lesenswert?

Sebastian M. schrieb:
>Ist denn die Schaltung soweit funktionstüchtig, damit ich die ADC werte
>überhaupt richtig reinbekomme?

Eben das sollst Du ja herausfinden. Schaltbild richtig zeichnen ist eine 
Sache. Versteckte Fehler muss man suchen. Dabei ist es egal ob selbst 
eingebrockt oder von erfinderjo übernommen.
Trau nur dem was Du selbst gemessen oder ausprobiert hast.

Du merkst wir helfen gern. Aber nicht bei allem.

;-)
OP #3388196
Lesenswert?

Guten Morgen,

so ich habe etwas rumgespielt, mit einem normalem Poti, mit Basic,mit 
mehreren Widerständen und mit Kopfhörern.

Dann habe ich folgende Schaltung gefunden:

Beitrag "Re: Simpler Klatschschalter - dynamisch geht, elektret nicht"

Dabei höre ich über die Kopfhörer wenn ich über das Mikro streiche. Am 
AVR zeigt es mir einen Pegel von ca. 23 (Wert spielt keine rolle) durch 
erzeugen einer Lautstärker fällt der wert dann auch 0! Habe ich etwas 
falsch angeschlossen (LM324)? Denn ich würde gerne bei steigender 
Lautstärke einen steigenden Pegel haben.

mfg
OP #3388216
Lesenswert?

Mit dem Programm habe ich das ausgelesen:


1
$regfile = "m8def.dat"
2
$crystal = 8000000
3
$hwstack = 100
4
$swstack = 100
5
$framesize = 100
6

7
' Taster
8
Config Pinc.2 = Input                                       '1
9
Config Pinc.3 = Input                                       '2
10
Config Pinc.4 = Input                                       '3
11
Config Pinc.5 = Input                                       '4
12

13
'Ausgänge
14

15
Config Pind.6 = Output                                      'grün
16
Config Pind.7 = Output                                      'gelb
17
Config Pinb.0 = Output                                      'rot
18
Config Pinb.1 = Output
19

20
'Variablen
21
Dim A1 As Word , U As Word
22
Dim A2 As Single , Amp As Single , Ao As Single , Au As Single , Grun As Single , Gelb As Single , Rot As Single
23
Dim Piezo As Single , Hsc As Single , Rotzeit As Single , Mw1 As Single , Mw As Single , Piezoaus As Single
24
Dim U2 As Single , Ub As Single , Up As Single , Sek As Single , Laufzeit As Single , Roth As Single
25
Dim I As Integer , J As Integer , K As Integer , N As Integer
26
Dim M As Byte , Prog As Byte , Rm As Byte , Pm As Byte , Laut As Byte
27
Dim Z As Long
28

29

30
'LCD Config
31
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portd.5
32
Config Lcd = 16 * 2
33
Waitms 300
34
Initlcd
35
Cls
36

37

38
Locate 1 , 1
39
Lcd "Programm?"
40

41
Do
42

43
If Pinc.2 = 1 Then
44
 Gosub Tastertest
45
End If
46

47
If Pinc.3 = 1 Then
48
 Gosub Batt
49
End If
50

51
Loop
52

53
' +++++++++++++++ Tastertest +++++++++++++++++++++
54
Tastertest:
55
Cls
56
Locate 1 , 1
57
Lcd "Tastertest"
58

59
Do
60

61
' +++++++++++++++++++++++ S1 +++++++++++++++++++++++++
62
If Pinc.2 = 1 Then
63
 Locate 2 , 1
64
 Lcd "S1"
65
 Portd.6 = 1
66
 Wait 1
67
 Portd.6 = 0
68
End If
69

70
Locate 2 , 1
71
Lcd "          "
72

73
' +++++++++++++++++++++++++ S2 ++++++++++++++++++++++++
74
If Pinc.3 = 1 Then
75
 Locate 2 , 1
76
 Lcd "S2"
77
 Portd.7 = 1
78
 Wait 1
79
 Portd.7 = 0
80
End If
81

82
Locate 2 , 1
83
Lcd "          "
84

85
' +++++++++++++++++++++++++ S3 ++++++++++++++++++++++++
86
If Pinc.4 = 1 Then
87
 Locate 2 , 1
88
 Lcd "S3"
89
 Portb.0 = 1
90
 Wait 1
91
 Portb.0 = 0
92
End If
93

94
Locate 2 , 1
95
Lcd "          "
96

97
' +++++++++++++++++++++++++ S4 ++++++++++++++++++++++++
98
If Pinc.5 = 1 Then
99
 Locate 2 , 1
100
 Lcd "S4"
101
 Portb.1 = 1
102
 Wait 1
103
 Portb.1 = 0
104
End If
105

106
Loop
107

108

109
' +++++++++++++++++++++++++ Batteriespannung ++++++++++++++++++
110
Batt:
111
Cls
112

113
Do
114
Config Adc = Single , Prescaler = Auto , Reference = Avcc
115
Start Adc
116

117
 U = Getadc(1)
118
 U2 = U
119

120
 A1 = Getadc(0)
121
 Ao = A1
122

123
Stop Adc                                                    'Lärmamplitude rechnen
124

125

126
Locate 1 , 1
127
Lcd "" ; Fusing(u2 , "#####.") ;
128
Locate 1 , 8
129
Lcd "" ; Fusing(ao , "####.") ; "   "
130
wait 2
131

132
Loop
Gast #3388247
Lesenswert?

Hi

> Gosub Tastertest

Bascom Hilfe:

With GOSUB, your program jumps to the specified label, and continues 
execution at that label.
When it encounters a RETURN statement, program execution will continue 
after the GOSUB statement.

Wo sind deinen RETURNs?

MfG Spess
OP #3388275
Lesenswert?

spess53 schrieb:
> Hi
>
>> Gosub Tastertest
>
> Bascom Hilfe:
>
> With GOSUB, your program jumps to the specified label, and continues
> execution at that label.
> When it encounters a RETURN statement, program execution will continue
> after the GOSUB statement.
>
> Wo sind deinen RETURNs?
>
> MfG Spess

Hab ich absichtlich weggelassen, damit ich die aktuellen werte dauerhaft 
angezeigt bekomme. Ist nur zu testzwecken.
Gast #3388428
Lesenswert?

Äh, nee, der LM3915 ist, einfach gesagt, ein Pegel -> LED Umsetzer, den 
man in VU Metern verwendet. Der LM324 ist ein Op-Amp.

Wenn man mehrere Ausgänge zusammenfassr (die Ausgänge sind Open 
Collector), kann man sicher auch die drei Treiber für die Ampel steuern. 
Er erspart Dir den ganzen uC Kram.

Schau mal hier:

Beitrag "Lautstärkeampel mit LM3915"

oder gleich hier:

http://www.mikrocontroller.net/search?query=LM3915
#3388561
Lesenswert?

@Sebastian

Was hälst Du hiervon ?
1
' +++++++++++++++++++++++ S1 +++++++++++++++++++++++++
2
If Pinc.2 = 1 Then
3

4
 Locate 2 , 1
5
 Lcd "S1"
6
 Portd.6 = 1
7

8
else if
9

10
 Locate 2 , 1
11
 Lcd "  "
12
 Portd.6 = 0
13

14
End If

waits unterbrechen den Programmablauf. Sollte man nach Möglichkeit 
anders programmieren.

2.
1
Config Adc = Single , Prescaler = Auto , Reference = Avcc
2
Start Adc
setzt Du an den Anfang des Programms. z.B. hinter config LCD.
1
STOP Adc
Brauchst Du in deinem Programm nicht.

3. fehlende Returns
Sowas gewöhn dir nicht erst an.

Das Programm springt sonst irgendwo hin, wo Du keine Übersicht mehr 
hast.

Empfehlung
1
' Start Initialisierung
2

3
config ect...
4

5
Lable_Hauptprogramm:
6

7
    ...
8
    GOSUB SUB_Tastenabfrage
9
    ...
10
    GOSUB SUB_ADC-Abfrage
11

12
GOTO Lable_Hauptprogramm
13

14

15
' Subroutinen
16
SUB_Tastenabfrage:
17
    ...
18
RETURN
19

20
SUB_ADC-Abfrage:
21
    ...
22
RETURN
#3389102
Lesenswert?

@Sebastian
> Denn ich würde gerne bei steigender
> Lautstärke einen steigenden Pegel haben.

Das geht so mit deinem Programm und deiner Schaltung nicht.

Ich versuchs mal einfach zu erklären:

Du hast am Prozessoreingang das Signal deines Verstärkers zu "liegen".
Dieses Signal besteht aus einem Gleichspannungsanteil und einem 
Wechselspannungsanteil.
Der Gleichspannungsanteil ist normalerweise immer vorhanden, auch wenn 
kein Ton vorhanden ist.
Der Wechselspannungsanteil ist Dein Tonsignal. Einfach gesangt: "je 
größer desto laut" ;-)

Der Gleichspannungsanteil wird durch den Kondensator zwischen LM324 und 
Prozessor "herausgefiltert".

Was du auswerten willst ist ja der Wechselspannungsanteil.
Dies geht aber nicht so einfach wie du es in deinem Programm (mit einer 
Zeile) geschrieben hast.

Schau dir mal das Programm von Erfinderjo an.
Dort wird für eine bestimmte Anzahl von Messungen der höchste und der 
niedrigste Wert ermittelt. Das ist eine Möglichkeit.

Dazu sollte aber deine Hardware also dein Verstärker funktionieren.

Wenn Du die originale Schaltung mit dem LM324 aufbaust sollte es auch 
funktionieren.
Schließe einen Lautsprecher oder Kopfhörer probeweise an den Ausgang des 
LM324 an.
Hörst Du was aus dem Lautsprecher/Kopfhörer, wenn Du auf's Mikrofon 
klopfst ?
Wenn ja funktioniert Dein Verstärker und Du kannst am Programm 
weitermachen. Mit dem Poti kannst Du wahrscheinlich die Lautstärke 
einstellen.
OP #3391541
Lesenswert?

Winne Z. schrieb:
> @Sebastian
>
> Was hälst Du hiervon ?

Hey, ja das werde ich dann berücksichtigen, wenn ich das Programm neu 
schreibe. Wollte jetzt erstamal das Programm von erfinderjo zum laufen 
bekommen, damit die Lärmampel wenigstens eine Funktion hat.

Winne Z. schrieb:
> Hörst Du was aus dem Lautsprecher/Kopfhörer, wenn Du auf's Mikrofon
> klopfst ?

Ja, klar und deutlich. Ist eigendlich ganz lustig.

Mit dem Programm von erfinderjo, klappt jetzt soweit auch alles, bis auf 
einen kleinen Fehler:

Nach dem Einschalten und Auswählen (Kantine oder Hausaufgaben) komme ich 
zu folgender Anzeige (Anzeige 1:). Da wird mir ein Pgl. von 2 bei 
vollkommener Stille angezeigt und steigend bei steigender Lautstärke.

Was aber verwunderlich ist, das auch bei einem Pegel von 2 die gelbe LED 
blinkt, und die rote dauerhaft leuchtet. Wenn ich dann die Schwellen 
über das LCD einstellen möchte, stehen da bei allen die Werte 0.

Ich vermute das liegt daran, dass die Werte aus dem Eeprom gelesen 
werden, welcher aber keine Werte hat, denn anfangs werden die zwar 
festgelegt,
1
'Settings
2
Prog = 1
3
...
4
Laut = 1
5
Hsc = 0
6
Grun = 5
7
Gelb = 80
8
Rot = 100
9
...

aber dann später aus dem Eprom geladen, welche eigendlich dann wieder zu 
0 werden.
1
Parameter:
2
If Prog = 1 Then                                            'Je nach Rezept entsprechende Parameter aus dem EEprom laden
3
Readeeprom Grun , &H11
4
Readeeprom Gelb , &H15
5
Readeeprom Rot , &H19
6
Readeeprom Piezo , &H1D
7
Readeeprom Laut , &H21
8
End If
9
If Prog = 2 Then
10
Readeeprom Grun , &H25
11
Readeeprom Gelb , &H29
12
Readeeprom Rot , &H2D
13
Readeeprom Piezo , &H31
14
Readeeprom Laut , &H35
15
End If

Oder hat jemand eine andere Idee?

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