Hilfe für VU Meter mit Bascom, Atmega8535 & LCD

OP #2710912
Lesenswert?

Halli Hallo,

Ich will mich kurz vorstellen, da ich neu hier bin;

Ich bin Lukas, 22 Jahre jung und mache derzeit eine Ausbildung als 
Elektroniker für luftfahrttechn. Systeme.

Seit kurzem versuche ich mich an der uC Technik.

Für die Berufsschule bau ich gerade ein VU Meter. Dies leider erstmal 
nur Mono, da auf den 8535 keine 11kb HEX CODE passen :( (Bascom sei 
dank)

Wie auch immer. Ich habe derzeit hauptsächlich das Problem, dass wenn 
ich ein Audiosignal direkt an einen ADC Eingang anlege, der Pegel bei 
weitem nicht hoch genug ist. Ich komme nicht über den Wert von ca 180 
/1024 hinaus. 1024 ist in meinem Falle ein Signal von 5 V.

Ich versuche seit Tagen zweifelhaft eine Schaltung zu stände zu bringen, 
welche mein Line Signal aus z.b. einen Mp3 Player auf einen 5 V Pegel 
bringt.

Würde mich über Gedankenanstöße freuen.

Hab versucht mit einem TL072 was zu erreichen aber irgendwie will das 
nicht so recht - zumal mir Zuhause viele Sachen wie ein Oszi oder ein 
Funktionsgenerator fehlen.

Vlt noch kurz zum Funktionsprinzip des Programmes:

Über einen Analogeingang wird via Cases in 64er Schritten der "Pegel" 
abgefragt. Jeder Case hat auf meinem LCD eine "Ziffer" (2x16 Zeichen 
LCD). Ich habe also 16 Cases - für jedes Zeichenfeld einen und damit es 
Flackerfrei läuft für jeden Case ein "Bild" mit 16 Zeichen welches das 
Vorgängerbild ohne CLS Befehl überschreibt.

Lg
OP #2710930
Lesenswert?

Wow, Danke!

hier mal mein Programm dazu:
1
$sim
2

3

4

5

6
$regfile = "8535def.dat"
7
'....................LCD.....................
8
$lcd = &HC000
9
$lcdrs = &H8000
10
Config Lcdbus = 4
11
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
12
Config Lcd = 16 * 2
13
'...................Port Config.............
14
Config Adc = Single , Prescaler = Auto , Reference = Avcc
15

16
Config Porta = Input
17

18

19

20

21
'..................Char Def.................
22
Deflcdchar 0 , 31 , 17 , 17 , 17 , 17 , 17 , 17 , 31
23

24
Deflcdchar 1 , 31 , 16 , 16 , 16 , 16 , 16 , 16 , 31
25

26
Deflcdchar 2 , 31 , 32 , 32 , 32 , 32 , 32 , 32 , 31
27

28
Deflcdchar 3 , 31 , 1 , 1 , 1 , 1 , 1 , 1 , 31
29

30
Deflcdchar 4 , 31 , 17 , 17 , 17 , 17 , 17 , 17 , 31
31

32
Deflcdchar 5 , 31 , 17 , 21 , 21 , 17 , 21 , 17 , 31
33

34

35

36

37

38

39
'--------------------INTRO------------------
40

41

42
Cls
43

44
Locate 1 , 1
45
Lcd "----VU-meter----"
46
Wait 10
47

48

49
'...................Prog.....................
50
Do
51
Dim X As Integer
52
X = 0
53

54
Dim A As Word
55
A = 0
56

57
A = Getadc(0)
58

59

60
Home Upper
61
Locate 1 , 1
62

63

64
'Cls
65

66

67
Select Case A
68

69
'0-------------
70

71
Case 0 :
72

73
Lcd "I               "
74
Lowerline
75
Lcd "     -**dB      "
76

77
'1-------------
78

79
Case 1 To 64:
80

81
Lcd "I"
82
Lcd Chr(0)
83
Lcd "              "
84
Lowerline
85
Lcd "     -45dB      "
86

87
'1-------------
88

89
Case 65 To 128:
90
Lcd "I"
91
Lcd Chr(1)
92
Lcd Chr(3)
93
Lcd "             "
94
Lowerline
95
Lcd "     -40dB      "
96

97
'2-------------
98

99
Case 129 To 192:
100
Lcd "I"
101
Lcd Chr(1)
102
Lcd Chr(2)
103
Lcd Chr(3)
104
Lcd "            "
105
Lowerline
106
Lcd "     -35dB      "
107

108
'3-------------
109

110
Case 193 To 256:
111
Lcd "I"
112
Lcd Chr(1)
113
Lcd Chr(2)
114
Lcd Chr(2)
115
Lcd Chr(3)
116
Lcd "           "
117
Lowerline
118
Lcd "     -30dB      "
119

120
'4-------------
121

122
Case 257 To 320:
123
Lcd "I"
124
Lcd Chr(1)
125
Lcd Chr(2)
126
Lcd Chr(2)
127
Lcd Chr(2)
128
Lcd Chr(3)
129
Lcd "          "
130
Lowerline
131
Lcd "     -25dB      "
132

133
'5-------------
134

135
Case 321 To 384:
136
Lcd "I"
137
Lcd Chr(1)
138
Lcd Chr(2)
139
Lcd Chr(2)
140
Lcd Chr(2)
141
Lcd Chr(2)
142
Lcd Chr(3)
143
Lcd "         "
144
Lowerline
145
Lcd "     -20dB      "
146

147
'6-------------
148

149
Case 385 To 448:
150
Lcd "I"
151
Lcd Chr(1)
152
Lcd Chr(2)
153
Lcd Chr(2)
154
Lcd Chr(2)
155
Lcd Chr(2)
156
Lcd Chr(2)
157
Lcd Chr(3)
158
Lcd "        "
159
Lowerline
160
Lcd "     -15dB      "
161

162
'7-------------
163

164
Case 449 To 512:
165
Lcd "I"
166
Lcd Chr(1)
167
Lcd Chr(2)
168
Lcd Chr(2)
169
Lcd Chr(2)
170
Lcd Chr(2)
171
Lcd Chr(2)
172
Lcd Chr(2)
173
Lcd Chr(3)
174
Lcd "       "
175
Lowerline
176
Lcd "     -10dB      "
177

178
'8-------------
179

180
Case 513 To 576:
181
Lcd "I"
182
Lcd Chr(1)
183
Lcd Chr(2)
184
Lcd Chr(2)
185
Lcd Chr(2)
186
Lcd Chr(2)
187
Lcd Chr(2)
188
Lcd Chr(2)
189
Lcd Chr(2)
190
Lcd Chr(3)
191
Lcd "      "
192
Lowerline
193
Lcd "     -05dB      "
194

195

196
'9-------------
197

198
Case 577 To 640:
199
Lcd "I"
200
Lcd Chr(1)
201
Lcd Chr(2)
202
Lcd Chr(2)
203
Lcd Chr(2)
204
Lcd Chr(2)
205
Lcd Chr(2)
206
Lcd Chr(2)
207
Lcd Chr(2)
208
Lcd Chr(2)
209
Lcd Chr(3)
210
Lcd "     "
211
Lowerline
212
Lcd "     -01dB      "
213

214
'10------------
215

216
Case 641 To 704:
217
Lcd "I"
218
Lcd Chr(1)
219
Lcd Chr(2)
220
Lcd Chr(2)
221
Lcd Chr(2)
222
Lcd Chr(2)
223
Lcd Chr(2)
224
Lcd Chr(2)
225
Lcd Chr(2)
226
Lcd Chr(2)
227
Lcd Chr(2)
228
Lcd Chr(3)
229
Lcd "    "
230
Lowerline
231
Lcd "      00dB      "
232

233
'11------------
234

235
Case 705 To 768:
236
Lcd "I"
237
Lcd Chr(1)
238
Lcd Chr(2)
239
Lcd Chr(2)
240
Lcd Chr(2)
241
Lcd Chr(2)
242
Lcd Chr(2)
243
Lcd Chr(2)
244
Lcd Chr(2)
245
Lcd Chr(2)
246
Lcd Chr(2)
247
Lcd Chr(2)
248
Lcd Chr(3)
249
Lcd "   "
250
Lowerline
251
Lcd "     +01dB      "
252

253
'12------------
254

255
Case 767 To 832:
256
Lcd "I"
257
Lcd Chr(1)
258
Lcd Chr(2)
259
Lcd Chr(2)
260
Lcd Chr(2)
261
Lcd Chr(2)
262
Lcd Chr(2)
263
Lcd Chr(2)
264
Lcd Chr(2)
265
Lcd Chr(2)
266
Lcd Chr(2)
267
Lcd Chr(2)
268
Lcd Chr(2)
269
Lcd Chr(3)
270
Lcd "  "
271
Lowerline
272
Lcd "     +02dB      "
273

274
'13------------
275

276
Case 833 To 896:
277
Lcd "I"
278
Lcd Chr(1)
279
Lcd Chr(2)
280
Lcd Chr(2)
281
Lcd Chr(2)
282
Lcd Chr(2)
283
Lcd Chr(2)
284
Lcd Chr(2)
285
Lcd Chr(2)
286
Lcd Chr(2)
287
Lcd Chr(2)
288
Lcd Chr(2)
289
Lcd Chr(2)
290
Lcd Chr(2)
291
Lcd Chr(3)
292
Lcd " "
293
Lowerline
294
Lcd "     +03dB      "
295

296
'14------------
297

298
Case 897 To 960:
299

300
Lcd "I"
301
Lcd Chr(1)
302
Lcd Chr(2)
303
Lcd Chr(2)
304
Lcd Chr(2)
305
Lcd Chr(2)
306
Lcd Chr(2)
307
Lcd Chr(2)
308
Lcd Chr(2)
309
Lcd Chr(2)
310
Lcd Chr(2)
311
Lcd Chr(2)
312
Lcd Chr(2)
313
Lcd Chr(2)
314
Lcd Chr(2)
315
Lcd Chr(3)
316
Lowerline
317
Lcd "     +04dB      "
318

319

320
'15------------
321

322
Case 961 To 1010:
323
Lcd "I"
324
Lcd Chr(1)
325
Lcd Chr(2)
326
Lcd Chr(2)
327
Lcd Chr(2)
328
Lcd Chr(2)
329
Lcd Chr(2)
330
Lcd Chr(2)
331
Lcd Chr(2)
332
Lcd Chr(2)
333
Lcd Chr(2)
334
Lcd Chr(2)
335
Lcd Chr(2)
336
Lcd Chr(2)
337
Lcd Chr(2)
338
Lcd Chr(4)
339
Lowerline
340
Lcd "     +05dB      "
341

342
'OVERDRIVE------------
343

344
Case Else :
345

346
Lcd "I"
347
Lcd Chr(1)
348
Lcd Chr(2)
349
Lcd Chr(2)
350
Lcd Chr(2)
351
Lcd Chr(2)
352
Lcd Chr(2)
353
Lcd Chr(2)
354
Lcd Chr(2)
355
Lcd Chr(2)
356
Lcd Chr(2)
357
Lcd Chr(2)
358
Lcd Chr(2)
359
Lcd Chr(2)
360
Lcd Chr(2)
361
Lcd Chr(5)
362

363
Lowerline
364
Lcd "---OVERDRIVE!---"
365

366

367
End Select
368

369

370

371

372

373
Waitms 40
374

375

376

377

378

379
Loop
380

381
End


Man kann denke ich nun gut erkennen, wieso das HEX FILE für Stereo so 
groß wird, wenn man es für die andere zur Zeit versuche ich das Problem 
so zu lösen, dass ich die "Bilder" des LCD als Konstante festlege... 
bisher aber mehr Erros als Trys ;)
Angehängte Dateien:
Gast #2710949
Lesenswert?

Hallo

ich habe zwar keine wirkliche ahnung von bascom, aber ich würde die 
ganze case-geschichte da anders schreiben, die anfangs und endwerte 
sowie die zu setzenden zeichen in eine lookuptable und mithilfe einer 
schleife diese dann auslesen. das erspaart hunderte einzelnder 
funktionen die alle platz brauchen
OP #2719293
Lesenswert?

Moin,

Aufbau steht... Programmierung lief gut nur habe ich folgendes Problem:

Mit dem aufbereiten des Linesignals von 0,7V auf 5V klappt es noch 
garnicht.

Im Anhang der Aufbau. Laut Oszi wird das Eingangssignal (Gelb) nur 
halbiert?

(Testweise mit 5V Aus dem Funktionsgenerator)

Jemand ne Idee?


Ein Bild des Aufbaus in Echt:


https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-snc7/576551_3421002970130_91489826_n.jpg
Angehängte Dateien:
#2719633
Lesenswert?

Lukas Lange schrieb:

> Man kann denke ich nun gut erkennen, wieso das HEX FILE für Stereo so
> groß wird,

Das einzige was ich erkennen kann, ist dass du nicht programmieren 
kannst.
Ist dir schon mal in den Sinn gekommen, dass so ein µC auch RECHNEN 
kann? Ja! Man kann aus dem Wert für A ausrechnen, wieviele 2-er Zeichen 
in die Zeile müssen und welche errechnete Zahl für die db anzuzeigen 
ist.

Deine Balkenanzeige ist immer(*) gleich
1 Zeichen  chr(1)
n Zeichen  chr(2)
1 Zeichen  chr(3)
m Leerzeichen

und das n kann man aus A ausrechnen! Und wenn man das n erst mal hat, 
kann man auch das m errechnen. Der Rest sind dann nur noch 2 Schleifen, 
die eine entsprechende Anzahl chr(2) bzw. Leerzeichen ausgeben.

(*) fast immer. Ausnahmen sind die untere Grenze und die obere.
Gast #2719635
Lesenswert?

> Wenn ich +/-5V drauf gebe, bleibt der Ausgang trotzdem unter der Hälfte
> der Eingangsspannung.

Wohin gehen dann deine nicht-invertierenden Eingänge ?

> Der abgeschnittene Sinusanteil liegt nun mit überhalb der 0 Linie
> etwas schwächer als die andere.

C1 und C2 noch drin ? Die mitteln die Grundlinie.
OP #2719741
Lesenswert?

Zum einen ist das mein erstes Projekt, wo ich programmiere und zum 
anderen habe ich anhand der hier wirklich guten Beispiele das mit dem 
Rechnen auch schon herrausgefunden.

@Karl Heinz Buchegger
Etwas schade finde ich die Art und weise wie das hier zum Ausdruck 
gebracht wird. - Zumindest liest es sich komisch. Ich habe im ersten 
Post schon geschrieben, dass ich in der µC Welt neu bin. Danke trotzdem 
noch einmal für den Hinweis.

Also zum aktuellen Stand:

@MaWin
Ich habe einfach mal einen Grundaufbau mit einem OP gemacht. Das 
Funktioniert wunderbar und sogar auf anhieb.

@MWS
Das mit den Eingängen wusste ich nicht. Und da ich diese geeigneten 
Programmierkenntnisse vermutlich nicht habe, lass ich mich gern 
diesbezüglich aufklären.
#2719794
Lesenswert?

Lukas Lange schrieb:

> Etwas schade finde ich die Art und weise wie das hier zum Ausdruck
> gebracht wird. - Zumindest liest es sich komisch.

Es liest sich deswegen komisch, weil du darauf herumreitest, dass ein 
simples Balkendiagramm auf einem µC 11k Speicher verbraucht und du nicht 
ansatzweise auf die Idee kommst, dass da ja wohl irgendwas nicht stimmen 
kann.

Wenn mir jemand sagt, er hätte die Fläche eines Rechtecks von 158 * 192 
Metern ausgerechnet und er hätte dafür 5 Seiten Papier gebraucht, dann 
kann ich ihm auf den Kopf zusagen: lern doch bitte erst mal 
Multiplizieren ehe du dich an so etwas wagst! 192 mal 158 
untereinanderschreiben und das dann zusammenzählen ist nicht annähernd 
genug Wissen um so ein Projekt zu starten.

Und mit dem ADC ist es genau dasselbe. Du fährst ein Auto, beschwerst 
dich, dass du nicht schneller als 30 km/h fahren kannst, und weißt gar 
nicht, dass es auch noch einen 2.ten Gang gibt.
Gast #2719825
Lesenswert?

Karl Heinz Buchegger lass wenigstens ab und zu auch mal ne 5 als grade 
Zahl gelten. Selbst Wissen ist relativ. Oder per Versuch und Irttum 
(v)ermittelt.

Gehe mal davon aus, jemand versucht sich an irgendeiner Sache. Was schon 
mal gut ist.

Stößt diese Person dann früher oder später an seine Grenzen, ist das 
etwas ganz natürliches. Also behandle es entsprechend.
Anstatt jemanden so anzufahren solltest du Anregungen liefern wie diese 
Person über diese Grenze hinaus weiterkommen kann.

Nur dann ist in der Sache geholfen worden und Zwischenbemerkungen 
überflüssig. Ich bitte das zu bedenken, zu beachten. Foren sind wozu da?
#2719829
Lesenswert?

Starkstromer schrieb:

> Foren sind wozu da?

Ich kann dir sagen, wozu sie nicht da sind:
Grundlagen lernen bzw. sich wenigstens einen Überblick darüber 
verschaffen, wozu die Hardware eigentlich im Stande ist.

Ich hab früher auch so gedacht und vielen (und ich meine wirklich viele) 
Anfängern ihre Programme gschrieben. Aber ich bin auch im Laufe der Zeit 
drauf gekommen, dass das auf lange Sicht nichts bringt. Denn die 
Programme werden einfach übernommen, ohne dass der beabsichtigte 
Lerneffekt eingetreten ist. 2 Wochen später hast du ihn wieder da, weil 
er noch eine Änderung braucht und du merkst: Der hat sich doch noch 
nicht einmal angesehen bzw. versucht zu verstehen, was du ihm da 
programmierst hast.
OP #2719862
Lesenswert?

Leiber Karl Heinz,

Ich habe mein Programm an das aus dem 4x20LCD VU Meter Beispiel 
angelehnt.

Soll ich dir was sagen? Ich konnte es verändern weil ich es verstanden 
habe. Weil ich eine Grundlage hatte wo ich Parameter ändern konnte und 
sehen konnte was passiert..
Persönlich bin ich der learning by doing Typ - kann nur nicht jeder mit 
um.

Ich hatte - nur mal nebenbei - nie verlangt, dass mir wer ein Programm 
schreibt. Habe nie nach genauen Codes gefragt, oder?

Ich freu mich, wenn jemand die Geduld hat sich diesen "Anfängerfragen" 
zu stellen. Wer das nicht möchte kann das doch einfach lassen.

Als Anregung: Andere Technikforen haben einen Einsteigerforum.

Würde mich freuen, wenn alles weitere zur Thematik beiträgt.
OP #2719886
Lesenswert?

JETZT Funktioniert alles. Ich Layoute Gerade.

Für die Präsentation morgen in der Berufsschule muss es halt noch mit 
Analoger Vorstufe sein. Gern schau ich mir dann auch die weiteren 
Möglichkeiten an, welche der 8535 bietet.

Dank für die Hilfe.. Werde nachher mal Bilder des fertigen Resultates 
posten.
Gast #2720527
Lesenswert?

Lukas Lange schrieb:
> @MWS
> Das mit den Eingängen wusste ich nicht. Und da ich diese geeigneten
> Programmierkenntnisse vermutlich nicht habe, lass ich mich gern
> diesbezüglich aufklären.

Ja, es hatte lediglich den Zweck, dass Du für später weist, Deinen 
momentanen Code betrachtet, wäre das zu komplex. Aber stell Dir einfach 
mal vor, man sampelt sehr schnell und tastet die Schwingung mit einer 
Vielzahl von Punkten ab. Dann kann man (mit einem gewissen Fehler) Vpp 
per Software ermitteln.

Von Deinem Code und Schaltung glaube ich nicht, dass Beides korrekt 
funktioniert. Da mag zwar irgendwas angezeigt werden, mit Realität hat 
das wenig zu tun. Bei 'nem Signalgemisch wie Musik wird's vielleicht 
einigermassen plausibel aussehen.

Die Abtastung in Deinem Code erfolgt mit einer Rate, die hauptsächlich 
von der LCD-Ausgabezeit bestimmt wird. Was für einen Effekt wird das 
wohl haben, wenn z.B. ein Sinus gleichgerichtet und immer zu 
unterschiedlichen Punkten der Schwingung gemessen wird ?
OP #2721165
Lesenswert?

Mal das Video.

https://www.youtube.com/watch?feature=player_embedded&v=mRh5Wo_iyhU

Der Code ist mittlerweile ganz anders - folgt in kürze ;)

@MWS:

Bisher ist es auch eher ein Pseudo VU Meter. Hardware steht aber und 
denke das Softwaremäßig noch einiges wie ein Spectrumanalyzer geht.

Nebenbei: Habe heute eine Eins darauf bekommen. Andere Projekte Konten 
mit einem Taster ne Lampe schalten.. ich denke dafür das ich vor 3 
Wochen damit angefangen habe das Ergebnis schon ganz gut ist.
Gast #2721207
Lesenswert?

Lukas schrob:
>Nebenbei: Habe heute eine Eins darauf bekommen.

Ich gratuliere dazu.

>Andere Projekte Konten
>mit einem Taster ne Lampe schalten.. ich denke dafür das ich vor 3
>Wochen damit angefangen habe das Ergebnis schon ganz gut ist.

Genau so ist das.

Ich empfinde es so: Programmieren ist für manch Einen (z.B. auch
für mich) richtig schwere Arbeit. Dem Nächsten fliegt das nur so zu.

Es ist wirklich das Vernünftigste, das Problem in kleinste Häppchen zu
zerlegen. Hannes Lux brachte mal den wunderschönen Spruch zu diesem
Vorgehen: "Wie ißt man einen Elefanten?"

;-)

MfG Paul
Gast #2721226
Lesenswert?

Lukas Lange schrieb:
> Bisher ist es auch eher ein Pseudo VU Meter.

Den "Igor, es lebt"-Faktor hat's dann sicher erfüllt.

> Andere Projekte Konten mit einem Taster ne Lampe schalten.

Also wenn das bei Euch Standard ist und wir davon ausgehen, dass Deine 
Mitschüler in etwa Dein Alter haben, dann wär's mir lieber, wenn diese 
Leute nicht an 'nem Flugzeug geschraubt haben, in dem ich sitze.

> ich denke dafür das ich vor 3 Wochen damit angefangen habe das Ergebnis
> schon ganz gut ist.

Ohne vorbelastet gewesen zu sein, ist so ein Ergebnis sicher gut.

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