Forum: Mikrocontroller und Digitale Elektronik PIC IR repeater - Verbesserungsvorschläge ?


von Christian K. (bfs)


Lesenswert?

Hallo,

das ist mein erster Post hier und stelle mich gerne erst mal vor :)
Ich habe mich vor kurzem (ca. 3 Monate) dazu entschieden Elektronik in 
die Liste meiner Hobbys aufzunehmen. Dazu möchte ich mich auch in PIC 
Mikrokontroller einarbeiten und habe mir bereits ein PicKit2 gekauft. 
Die Einarbeitung in das Feld der Elektronik geht sicher nicht von heut 
auf morgen und ich habe viel zu lesen, das ist mir auch recht schnell 
bewusst geworden.

Nachdem ich meine ersten blinkenden LEDs mittels PIC realisiert habe 
sollte es auch gleich etwas sinnvolleres werden. Als erstes kleines 
Project habe ich mich entschlossen einen IR-repeater nachzubauen, den 
ich hier: 
http://picprojects.org.uk/projects/miniprojects.htm#IR%20Remote%20Control%20Repeater
gefunden habe. Momentan habe ich es auf einem Breadboard 
zusammengesteckt und es funktioniert soweit super und erfüllt genau den 
von mir benötigten Zweck. Aber bevor ich das jetzt auf eine Platine löte 
habe ich eine kleine Frage an die Profis hier:
Ich habe den Verbrauch der Schaltung nachgemessen und bin auf ca. 6 mA 
gekommen (idle). Wenn ich die Schaltung nun mit einer 9V Blockbatterie 
betreiben möchte (ich nehme mal 600 mAh an und das ist schon viel), dann 
komm ich damit gerade mal 100 h weit, richtig?
Meine Frage ist nun: Lässt sich da mit einfachen Mitteln noch etwas 
rausholen? Ich würde nur ungern mein erstes Projekt mit einem Netzteil 
dauerhaft an den Strom hängen... dann trau ich mich ja nicht mehr aus 
dem Haus :)

Und wie komme ich am besten von einem Schaltdiagramm zu einer sinnvollen 
Auslegung auf einer Lochplatine? Auf dem Breadboard sieht das noch nicht 
optimal aus und es geht sicher besser. Aber für die Frage bediene ich 
gerne auch die Forumssuche... (Ich wollte dennoch fragen - vielleicht 
möchte mich jemand ja draufschupsen. Wenn ich im Forum lese bleibe ich 
bei jedem zweiten Thema hängen.... ist ja alles interessant hier)

Danke für die Hilfe,

Christian

von GroberKlotz (Gast)


Lesenswert?

Hallo Christian,
habe mir mal das Projekt angeschaut. Meinen schwachen 
Englischkenntnissen verschließt sich jedoch der Zweck der Schaltung: 
"and allows the signal to be repeated in another location".

Nun gut, Strom sparen funktioniert zum einen mit geringerer 
Versorgungsspannung (schau mal ins Datenblatt) - Grenzen setzt wohl die 
Flusspannung der LED. Anderseits kann man den Pic in jeder 
"Arbeitspause" in den Schlafmodus versetzen. 1000x 10µs ergeben dann 
auch 1/10 weniger aktive Zeit und evtl. 0.5mA oder mehr Stromersparnis.

Schau doch mal nach "Lochmaster" bzw "Blackboard". Letzteres ist frei 
und uneingeschränkt nutzbar.

Gruss GroberKlotz

von Christian (Gast)


Lesenswert?

Hallo GroberKlotz,

herzlichen Dank für die Hilfe. Die Schaltung leitet das IR Signal einer 
Fernbedienung weiter. Dh. das Signal wird aufgenommen und von einer 
IR-LED wieder abgegeben. Dabei wird die IR-LED an einem Kabel in einen 
anderen Raum (oder in den Schrank in dem alle Empfänger stehen) 
verlängert.
Soweit ich verstanden habe ist der PIC dazu da Störsignale zu filtern, 
damint die IR-LED nicht ständig an ist.
Den Quellcode versuche ich noch nachzuvollziehen, aber der PIC wird 
stellenweise in den Sleepmode geschickt.

Ich dachte das eventuell der Festspannungsregler viel Energie verbratet. 
Der hat doch sicher eine Verlustleistung beim Runterregeln. Ich kenn 
mich aber noch nicht so damit aus, bin wie gesagt schwer am lernen :) 
Aber prinzipiell brauche ich ja nirgenwo 9V... vielleicht kann man ja 
mit der Versorgungsspannung runter und mit 6V noch stabile 5 V 
generieren?

Danke für die Programmtips ! Da werde ich heute nach der Arbeit mal 
reinschaun.


Und noch mal an alle hier: Super Forum! Sehr informativ und nicht so ein 
rumgepöbel wie es oft in Foren der Fall ist :) Finde ich super.

von GroberKlotz (Gast)


Lesenswert?

....apropos Spannungsregler
Die 9V haben zusammen mit dem Spannungsregler nichts mit dem 
Stromverbrauch zu tun. Der Spannungsregler zieht eben den Strom der 
Schaltung und dazu seinen Ruhestrom aus der Batterie. Dabei verbrät er 
die Spannungsdifferenz 9-5V mit dem Gesamtstrom zur Verlustwärme.

Schau aber doch mal in die Datenblätter eines 7805 und 78L05. Der 
Ruhestrom beträgt beim 78L05 etwas weniger als beim 7805. Auch 
LowDrop-Spannungsregler glänzen mit einem niedrigen Eigenstrombedarf 
(z.B. LP2950).

mfG GroberKlotz

von Erich (Gast)


Lesenswert?

>Ich würde nur ungern mein erstes Projekt
>mit einem Netzteil dauerhaft an den Strom hängen...
>dann trau ich mich ja nicht mehr aus dem Haus :)

Tatsächlich solltest du keinesfalls 230V~ auf eigene Platine oder auch 
nur in eines Gehäuse mit Bastelaufbau tun.
Aber du kannst ein preiswertes Steckernetzteil verwenden, ein möglichst 
schwaches für deinen Zweck.

Geeignet ist beispielsweise das "Steckernetzteil FW 4199" das bei Pollin 
für 0,95 Euro erhältlich ist. Liefert unstabilisiert 7,5 Volt (d.h. bei 
geringer Last etwas mehr) und 'nen 5V Regler hast in deiner Schaltung ja 
drin.

"FW" steht für den Hersteller "Friwo".
Das sind (Stecker-) Netzteile zu nach Vorschrift und Zulassung gebaut 
sind, selbst bei Dauerkurzschluss am Ausgang darf da nichts anbrennen 
(warm werden dann möglicherweise schon, oder defektgehen nach 1 Stunde).

Selbst bei 1W (oder 1VA) Dauerleistung aus dem Netz ist es preiswerter 
als 4 neue Batterien pro Jahr.

Gruss

von Peter D. (peda)


Lesenswert?

6mA ist recht viel. Der Sensor braucht davon 1,5mA.

An die 1,5mA kann man aber rankommen. Dazu muß man einen MC nehmen, der 
mit Pin-Change aufwachen kann (z.B. ATtiny13).
Auch ist eine PWM (z.B. ATtiny13) nützlich, um die 40kHz stabil zu 
erzeugen.


Peter

von Christian (Gast)


Lesenswert?

GroberKlotz schrieb:
> Der Spannungsregler zieht eben den Strom der
> Schaltung und dazu seinen Ruhestrom aus der Batterie. Dabei verbrät er
> die Spannungsdifferenz 9-5V mit dem Gesamtstrom zur Verlustwärme.

Verstehe ich das richtig, dass der Spannungsregler nur dann Strom 
verbraucht, wenn der Verbraucher hinter dem Regler Strom verbraucht + 
Ruhestrom ? D.h. wenn 5V und x mA von der Schaltung gezogen werden, dann 
verbrät der Regler die 4V Differenz? Da muss ich noch mal lesen gehen...

Erich schrieb:
> Selbst bei 1W (oder 1VA) Dauerleistung aus dem Netz ist es preiswerter
> als 4 neue Batterien pro Jahr.

4 Batterien pro Jahr wären noch ok. Da würde ich dann Akkus nehmen. Aber 
nach meiner Rechnung wären das überschlagen eine Batterie alle 4 Tage. 
Obwohl mir das sehr viel vorkommt. Aber 600 mAh / 6 mA = 100 h ?

Erich schrieb:
> Geeignet ist beispielsweise das "Steckernetzteil FW 4199" das bei Pollin
> für 0,95 Euro erhältlich ist.

Steckernetzteil ist allerdings eine gute Idee. Wir haben hier in der 
Firma einen Eletronik Schrott. Da werden ständig alte Netzteile 
weggeworfen...
Kann ich da bedenkenlos eins mit 7,5 -9 V rauskramen oder sollte ich 
darauf achten das es nicht zu viel mA liefert? Sprich habe ich eine 
höhere Verlustleistung bei einem leicht überdimensionierten Netzteil, 
oder ist die Verlustleistung abhängig vom Verbraucher? Ansosnten sind 
0.95 Euro natürlich auch nicht zu viel ;)


Peter Dannegger schrieb:
> An die 1,5mA kann man aber rankommen. Dazu muß man einen MC nehmen, der
> mit Pin-Change aufwachen kann (z.B. ATtiny13).

Das kann der PIC12F675 meines Wissens auch. Wenn ich durch den 
Sourcecode durchgestiegen bin werde ich da auch ein wenig mit 
rumspielen. Das kann ich ja immer noch machen, wenn ich die Platine 
gelötet habe...


Super vielen Dank für den Input :)

Gruss Christian

von usuru (Gast)


Lesenswert?

> An die 1,5mA kann man aber rankommen. Dazu muß man einen MC nehmen, der
> mit Pin-Change aufwachen kann (z.B. ATtiny13).

Das kann auch ein PIC, auch der 12F675. Der ist aber keine gute Wahl, 
weil er entweder mit Quarz oder intern nur mit 4 MHz läuft, was schon 
mal mindestens 1 mA zieht plus Timer, WDT, ADC etc, falls die nicht 
abgeschaltet sind (habe jetzt nicht nachgesehen). Die restlichen 5 mA 
sind wohl der TSOP und vor allem der 7805.

Also lass erst mal den 7805 weg und nimm 3x AA oder AAA statt der 
Blockbatterie, das sind 4.5 Volt, da läuft auch alles problemlos. Dann 
kannst Du noch den 12F683 oder den 12F1822 nehmen und mit niedrigerer 
Frequenz betreiben, z.B. 31, 125 oder 250 khz, dann braucht der 
plötzlich VIEL weniger, z.B. nur noch 30-60 µA bei 31 khz. Dann kann es 
aber sein, dass Du den Code anpassen musst.

von Erich (Gast)


Lesenswert?

>Kann ich da bedenkenlos eins mit 7,5 -9 V rauskramen
Im Prinzip ja.
Gleichspannung sollte es abgeben (selten gibt es welche mit AC Ausgang); 
eine interne Stabilisierung ist überflüssig solange dein 7805 drauf ist 
(billige Resteteile haben das eh nicht).

Da deine Schaltung (aus Sicht des Steckernetzteils) so wenig mA braucht, 
ist ein möglichst kleines gut. Leistungsstärkere haben höheren 
Eigenverbrauch (des Trafos od. gar des internen Schaltreglers).

von Marcus P. (marc2100)


Lesenswert?

Hi,
du könntest auch einfach ein USB-Netzteil nehmen z.B. Reichelt "NT IP 
USB SL", da kommen direkt 5V raus, sind nicht besonders stark ~700mA@5V 
und du kannst den Spannungsregler direkt weglassen.

Gruß
Marcus

von Christian K. (bfs)


Lesenswert?

So, ich war heute dann mal dumpster diving - und das recht erfolgreich 
:) Nun habe ich 3 Netzteile zur Auswahl:

1) Ein Nokia Netzteil: 5V / 890mA out. Das wäre ja equivalent zum USB 
Netzteil. Hier kann ich dann auf den Spannungsregler verzichten

2) Ein Logitech Netzteil: 5.25V / 300mA out. Muss ich noch mal nachlesen 
ob der PIC das mitmachen würde. Aber wahrscheinlich kann ich dann auch 
das Nokia nehmen...

3) Eines mit 7.2V / 500 mA out. Das könnte ich so wie es ist an die 
bestehende Schaltung klemmen ....

Aber auch wenn ich mit dem Hobby gerade erst anfange finde ich es eine 
sportliche Herausforderung so energiesparend wie möglich zu sein. 
Besonders wenn es um eine Schaltung geht, die zwar immer an sein soll, 
aber maximal nur 2 Stunden pro Tag benutzt wird....

Deshalb werde ich wahrscheinlich die Schaltung noch nicht zusammenlöten 
sondern auf dem Breadboard lassen und erst mal mit dem Nokia Netzteil 
ohne dem Spannungsregler weitermachen. Mal sehen was dann rauskommt.

usuru schrieb:
> Also lass erst mal den 7805 weg und nimm 3x AA oder AAA statt der
> Blockbatterie, das sind 4.5 Volt, da läuft auch alles problemlos. Dann
> kannst Du noch den 12F683 oder den 12F1822 nehmen und mit niedrigerer
> Frequenz betreiben, z.B. 31, 125 oder 250 khz, dann braucht der
> plötzlich VIEL weniger, z.B. nur noch 30-60 µA bei 31 khz. Dann kann es
> aber sein, dass Du den Code anpassen musst.

Das hört sich sehr vielversprechend an. Das werde ich als zweiten 
Schritt angehen. Allerdings wird das mit 31 khz nicht funktionieren da 
ich ja eine 40 khz Trägerfrequenz benötige, oder ? Ach das mit dem 
Timing bekomme ich noch raus... das entwickelt sich zu einem schönen 
Lernprojekt.

Gruss und schönen Abend,

Christian

von Der Rächer der Tranistormorde (Gast)


Lesenswert?

Christian K. schrieb:
> Das hört sich sehr vielversprechend an. Das werde ich als zweiten
> Schritt angehen. Allerdings wird das mit 31 khz nicht funktionieren da
> ich ja eine 40 khz Trägerfrequenz benötige, oder ? Ach das mit dem
> Timing bekomme ich noch raus... das entwickelt sich zu einem schönen
> Lernprojekt.

Kannst du den Pic selbst programmieren? Dann lege die Empfangsdiode auf 
eine Pin der den Pic aufweckt und leg ihn schlafen.

Je nach Pic verbraucht der dann  µicro oder nanoampere und zieht nur mA 
wenn ein Signal kommt.

Dein Empfänger wird aber die Batterie leersaugen egal wie toll der µC 
ist.

Vielleicht über einen Pin ein und ausschalten oder einen besseren finden 
oder ne Solarzelle nehmen

von GroberKlotz (Gast)


Lesenswert?

usuru schrieb:
> Das kann auch ein PIC, auch der 12F675. Der ist aber keine gute Wahl,
> weil er entweder mit Quarz oder intern nur mit 4 MHz läuft,

Schau mal ins Datenblatt, richtig: 4MHz interner Oszillator (1% 
calibriert) extern max 20MHz (Arbeitstakt ist jeweils 1/4 davon).

@christian
im Forum hier musst Du Dich daran gewöhnen, dass die meisten 
Forumsteilnehmer PRO AVR (ATiny, ATmega usw) eingestellt sind und wenn 
einer mal 'nen PIC verwendet (so wie ich) dann werden doch manchmal 
einseitige Aussagen getroffen (siehe post von P.Dannegger).

Betriebsbereich: Der PIC kann zwischen 2.0 bis 5.5V (Datenblatt!) 
betrieben werden. Zum Stromsparen also evtl. die geringstmögliche, zum 
Betrieb des IR-Empfängers/Senders noch ausreichende Spannung wählen.

Ein echter Sparvorschlag: Ohne Empfangsimpuls den PIC in den Power Down 
(Sleep)-Modus zu schicken und dann beim ersten Empfangsimpuls wieder 
aufzuwecken! Schau doch mal dazu im Datenblatt das Kapitel "9.7
Power-Down Mode (SLEEP)" an.

Genau diese Methode ist auch vom Entwickler 
[http://picprojects.org.uk/projects/code/RemoteEx-4.asm] vorgesehen. 
Eigentlich könntest Du Dich für ein erstes Erfolgserlebnis an diese 
Vorgabe halten und dann davon ausgehend experimentel mehr und mehr mit 
der Optimierung voranzuschreiten.

Zum Timing: wenn Du z.B 31 kHz brauchst:
31khz * Vorteiler (für TMR0 z.B 1:1 - 1:256) * 4 = fosz 
(Oszillatorfrequenz
Während der TMR0 ein 8Bit-Zähler ist, kannst Du auch dem 16Bit-TMR1 
einen Vorteiler zwischen 1:1 und 1:1 verpassen, um auf die richtige 
Frequen zu kommen. Mittels der Software kannst Du jederzeit eine 
"Feinabstimmung" vornehmen.

Also geh's an
mfG GroberKlotz

von GroberKlotz (Gast)


Lesenswert?

GroberKlotz schrieb:
> zwischen 1:1 und 1:1 <- ist Krampf Richtig:  1:1 und 1:8

von Peter D. (peda)


Lesenswert?

Ich hab auch ein Gerät, was sehr unempfindlich ist, man muß die FB immer 
genau  ausrichten.
Hab hier mal schnell ne Version des Repeaters mit AVR gestrickt:
1
#include <avr/interrupt.h>
2
#include <avr/sleep.h>
3
4
// Target: ATtiny13
5
//  Input: Pin 3 = PB4 = PCINT4, low = Impuls
6
// Output: Pin 6 = PB1 = OC0B,  high = LED on
7
8
#define F_CPU           1.2e6                           // 1.2MHz (factory default)
9
#define PWM_FREQUENCY   40e3                            // 40kHz
10
#define PWM_RATIO       0.25                            // 25%
11
12
EMPTY_INTERRUPT( PCINT0_vect );                         // to awake on pin change 
13
14
int main()
15
{
16
  GIMSK  = 1<<PCIE;                                     // enable pin change interrupt    
17
  PCMSK  = 1<<PCINT4;                                   // for PB4
18
  OCR0A  = F_CPU / PWM_FREQUENCY - 0.5;                 // 40kHz
19
  OCR0B  = F_CPU / PWM_FREQUENCY * PWM_RATIO - 0.5;     // 25%
20
  TCCR0A = 1<<WGM01 | 1<<WGM00;                         // fast PWM, OCR0A = top
21
  TCCR0B = 1<<WGM02 | 1<<CS00;                          // fast PWM, no prescaler
22
  PORTB  = 1<<PB0 | 1<<PB2 | 1<<PB3 | 1<<PB4 | 1<<PB5;  // pullups on
23
  DDRB   = 1<<PB1;                                      // PB1 = output;
24
  sleep_enable();                                       // enable sleep
25
  
26
  for(;;){
27
    if( PINB & 1<<PB4 ){                                // high = pulse off
28
      TCCR0A &= ~(1<<COM0B1);                           // disconnect PB1 from PWM (PB1 = low)     
29
      set_sleep_mode( SLEEP_MODE_PWR_DOWN );            // power down (PWM stopped)
30
    }else{                                              // low = pulse on
31
      TCCR0A |= 1<<COM0B1;                              // connect PWM to PB1
32
      set_sleep_mode( SLEEP_MODE_IDLE );                // idle (PWM running)
33
    }
34
    sei();
35
    sleep_cpu();                                        // sleep until interrupt
36
    cli();
37
  }
38
}

Peter

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.