Forum: Analoge Elektronik und Schaltungstechnik Strommessung mit TLC549 und TLC272 als Messverstärker


von runni (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

baue an einer Schaltung zur Strommessung mit einem TLC549, damit die 
Messwerte stabiler und leicht zu verarbeiten sind ist U-Ref 2,56V und 
der Eingang wird mit einem 1:10 Verstärker vom Shunt angehoben.

Meine Frage: gibt es etwas Besonders bei dem Messverst. zu beachten oder 
kann ich den so lassen? (Funktionieren tuts schon)

Danke.

MfG, R.N.

von Joe (Gast)


Lesenswert?

Das ist 1:11, RK/RE + 1

von runni (Gast)


Lesenswert?

Ok, R8 also 11,11k, hab da jetzt ein Poti zum testen ist mir deshalb 
nicht aufgefallen.
Danke.

von Joe (Gast)


Lesenswert?

Für die Tiefpaßschaltungen würde ich 10k / 100nF nehmen. Deine fgr. 
liegt bei 15 Hz.

von Joe (Gast)


Lesenswert?

Sorry, bin heute ein bischen langsam, für die VREF würde ich ein REF 
Element verwenden, 2 Potis sind 2 zuviel ;-))

von runni (Gast)


Lesenswert?

Danke.

So hypergenau muss es nicht werden, soll als Anzeige in mein WoMo.
Gibt es denn Ref.Quellen mit 2,56V am Ausgang?
Der Prototyp läuft auf dem Steckbrett eigentlich ganz ok. Was kann man 
denn am Eingang des ADC als Multiplexer nehmen? 4053?

von Joe (Gast)


Lesenswert?

4053 ist in Ordnung, ja es gibt 2,56 V REF Elemente.

Du mußt es auch nicht zu genau nehmen, sollte nur ein Hinweis sein.

Wie gesagt, 10K / 100 nF würde ich dennoch vorschlagen, wie oft wird 
denn die Messung ausgeführt ? /Sek. ?

von runni (Gast)


Lesenswert?

Mein Programm macht momentan soviele Messungen wie es schaft :-), das 
sind so ca. 130 Messungen/Sek., momentan wird noch ein Balkenanzeige 
zusätlich zur Ausgabe des Wertes realisiert, die fällt aber später weg. 
War nur ein Test, dann sind so 300 Mess./Sek. möglich, was aber durch 
die Anzahl der genutzten Kanäle des Mux geteilt werden muss.
Ich denke um die Schaltung universell einsetzten zu können, das der 4051 
mit 8 Eingängen optimal ist.
Der 8051 läuft mit 11,059MHz, ggf. versuch ich mal die 89LP4051, hab ich 
noch da, werde die aber einbremsen müssen da sonst das LM162 Display 
schlapp macht.

von runni (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

hab das Teil mit einem 4051 erweitert, es funktioniert auch fast alles.
Ein Problem, der 4051 reagiert komisch, das Umschalten ist immer um ein 
versetzt:

y - x0 sollte eigentlich a0 b0 sein, ist aber a1 b0, also immer eins 
weiter. Kann ich mir nicht erklären, sieht auch am Oszi ok aus.

hier der Quellcode "MCS-51 Assembler V 4 Andreas Roth"
1
#cpu = 80C31  ; @12 MHz
2
  
3
#bit clk = p3.3, data = p3.4, cs = p3.5, muxa = p1.0, muxb = p1.1
4
#byte adc_read0, adc_read1, adc_read2, adc_read3
5
6
;LCD
7
#bit d0=p1.4, d1=p1.5, d2=p1.6, d3=p1.7
8
#bit rs=p1.2, en=p1.3
9
#bit nibble_write
10
#byte write_pause
11
  
12
; Initialisierung
13
14
acall init_lcd
15
16
start:
17
  
18
;Kanal 0 Messen
19
setb muxa    ;mux auf Eingang 0 (eigentlich 1)
20
clr muxb
21
acall warten  ;warten bis mux umgeschalten hat
22
acall adc    ;wandeln
23
mov adc_read0, a  ;Ergebniss sichern
24
acall warten  ;warten bis nächster Kanal gewählt werden kann
25
  
26
;Kanal 1 Messen
27
clr muxa    ;mux auf Eingang 1 (eigentlich 2)
28
setb muxb
29
acall warten  ;warten bis mux umgeschalten hat
30
acall adc    ;wandeln
31
mov adc_read1, a  ;Ergebniss sichern
32
acall warten  ;warten bis nächster Kanal gewählt werden kann
33
  
34
;Kanal 2 Messen
35
setb muxa    ;mux auf Eingang 2 (eigentlich 3)
36
setb muxb
37
acall warten  ;warten bis mux umgeschalten hat
38
acall adc    ;wandeln
39
mov adc_read2, a  ;Ergebniss sichern
40
acall warten  ;warten bis nächster Kanal gewählt werden kann
41
  
42
;Kanal 3 Messen
43
clr muxa    ;mux auf Eingang 3 (eigentlich 0)
44
clr muxb
45
acall warten  ;warten bis mux umgeschalten hat
46
acall adc
47
mov adc_read3, a  ;Ergebniss sichern
48
;acall warten  ;warten bis nächster Kanal gewählt werden kann
49
  
50
  
51
acall lcd_out
52
  
53
jmp start
54
55
end
56
; * * * Hauptprogramm Ende * * *
57
  
58
adc: 
59
 mov a, #0h
60
 clr clk
61
 clr cs
62
 for r4=#8
63
        setb clk
64
;acall warten
65
      if bit data
66
        setb c
67
      else
68
        clr c
69
         end if
70
     rlc a
71
     clr clk
72
;acall warten
73
 next
74
 setb cs
75
 setb clk
76
ret
77
  
78
lcd_out:
79
  
80
  clr rs  ;LCD auf Instruktion Register umschalten
81
  mov a, #80h  ;Befehl nach Akku
82
  acall write_lcd  ;Befehl an LCD senden
83
  
84
  ;Anzeigen der Spannungen in Zeile 1
85
  
86
  mov a, #'V'
87
  acall put_char
88
  mov a, #':'
89
  acall put_char
90
  
91
  mov a, adc_read0  ;Wert  nach Akku
92
  acall hex_to_dec  ;Wandeln nach BCD
93
  
94
  mov a, r1
95
  if a = #0      ;führende 0 löschen
96
    mov a, #' '
97
  else
98
    add a, #30h
99
  end if
100
  acall put_char
101
  mov a, r2
102
  add a, #30h
103
  acall put_char
104
  
105
  mov a, #','
106
  acall put_char
107
  
108
  mov a, r3
109
  add a, #30h
110
  acall put_char
111
  
112
  mov a, #' '
113
  acall put_char
114
  
115
  mov a, #'V'
116
  acall put_char
117
  mov a, #':'
118
  acall put_char
119
  
120
  mov a, adc_read3  ;Wert  nach Akku
121
  acall hex_to_dec  ;Wandeln nach BCD
122
  
123
  mov a, r1
124
  if a = #0      ;führende 0 löschen
125
    mov a, #' '
126
  else
127
    add a, #30h
128
  end if
129
  acall put_char
130
  mov a, r2
131
  add a, #30h
132
  acall put_char
133
  
134
  mov a, #','
135
  acall put_char  
136
  
137
  mov a, r3
138
  add a, #30h
139
  acall put_char
140
  
141
  mov a, #c0h
142
  clr rs
143
  acall write_lcd
144
  
145
  ;Anzeigen der Ströme in Zeile 2
146
  
147
  mov a, #'A'
148
  acall put_char
149
  mov a, #':'
150
  acall put_char
151
  
152
  mov a, adc_read1  ;Wert  nach Akku
153
  acall hex_to_dec  ;Wandeln nach BCD
154
155
  mov a, r1
156
  add a, #30h
157
  acall put_char
158
  mov a, #','
159
  acall put_char
160
  mov a, r2
161
  add a, #30h
162
  acall put_char
163
  mov a, r3
164
  add a, #30h
165
  acall put_char
166
167
  mov a, #' '
168
  acall put_char
169
170
  mov a, #'A'
171
  acall put_char
172
  mov a, #':'
173
  acall put_char
174
175
  mov a, adc_read2  ;Wert  nach Akku
176
  acall hex_to_dec  ;Wandeln nach BCD
177
178
  mov a, r1
179
  add a, #30h
180
  acall put_char
181
  mov a, #','
182
  acall put_char
183
  mov a, r2
184
  add a, #30h
185
  acall put_char
186
  mov a, r3
187
  add a, #30h
188
  acall put_char
189
190
ret
191
192
hex_to_dec:     ;Ausgangswert im Akku, Ergebniss in r1,2,3
193
  mov b,#10d 
194
  div ab 
195
  mov r3,b   
196
  mov b,#10d 
197
  div ab 
198
  mov r1,a 
199
  mov r2,b 
200
ret
201
  
202
bcd_to_hex:
203
  push  b      ; Save B
204
  push  acc      ; Save Value
205
  anl  a,#0f0h      ; Keep High Bits
206
  swap  a      ; Get To Low
207
  mov  b,#10      ; 10 Decimal
208
  mul  ab      ; Multiply
209
  mov  b,a      ; Store In B
210
  pop  acc      ; Recover BCD Value
211
  anl  a,#00fh      ; Keep Low Nybble
212
  add  a,b      ; Add In High
213
  pop  b      ; Recover B
214
ret    ; Return To Caller
215
216
warten:
217
  for r0=#01h
218
    for r5=#3ch   ; ~80 us
219
    next
220
  next
221
ret

  

von runni (Gast)


Lesenswert?

ach ja, es fehlt noch die include Datei fürs LCD, die ist ja für den Mux 
nicht wichtig.
Sollte wer Interesse daran haben, www.elste.org unter 
Akku-Kapazitätsmessgerät.

von Ralf N. (runni) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier ein Bild von dem Teil.

P.S. ja ich habe auch einen Login, das Passwort aber nicht immer im Kopf

von juppo (Gast)


Lesenswert?

Hallo

Ich arbeite auch gerade mit dem TLC549

Habe da folgendes Problem

Ref Spannung ist 2,5 V über LM385

Die Daten die eingelesen werden geben

1,25 V              0-255
1,25 -2,5 V nochmal 0-255

Variabeln sind als unsigned char deklariert und eingelesen werden 8 Bits

Hat jemand ne Idee

Schönes Wochenende

Juppo

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.