Guten Abend,
ich habe heute die Schaltung aus dem folgenden Beitrag ausprobiert :
Beitrag "Blaue LED an 2.5V Microcontroller"
http://www.mikrocontroller.net/attachment/217340/Ladungspunpe_LED.PNG
Die Diode 4148 habe ich wegen der besseren VF von 0,3V gegenüber 0,7V
durch eine Bat43 ersetzt. Die 100N und der 100Ohm Widerstand sind
geblieben, als blaue Led dient die "LED, 5mm, Low Cost, blau" von
Reichelt.
Folgender Testcode wurde verwendet (aus nachfolgendem Grund nicht mit
einem Timer) :
1 |
|
2 |
|
3 | /*
|
4 | * Attiny13_Ladungspumpe.c
|
5 | Ua = 2* Ue - 2* Ud
|
6 | (2*2,4V) - (2*0,7V) = 3,4V (4148)
|
7 | (2*2,4V) - (2*0,3V) = 4,2V (Bat43)
|
8 |
|
9 | Device Attiny13A
|
10 | Clock Intern 9,6MhZ + ckdiv8
|
11 | Fuse High 0xFF Low 0x6A
|
12 | Pins PB3 Taster an GND
|
13 | PB4 LED Ladungspumpe
|
14 | VCC 2,4V ( 1,8 - 3 )
|
15 | */
|
16 |
|
17 | #ifndef F_CPU
|
18 | #define F_CPU 1200000
|
19 | #endif
|
20 |
|
21 | #include <avr/io.h>
|
22 | #include <util/delay.h>
|
23 | #include <stdbool.h>
|
24 |
|
25 | #define lade_PB4 DDRB &=~ (1 << PB4); PORTB &=~ (1 << PB4);
|
26 | #define entlade_PB4 DDRB |= (1 << PB4); PORTB |= (1 << PB4);
|
27 |
|
28 | int main(void)
|
29 | {
|
30 | DDRB = 0x00;
|
31 | PORTB |= (1<<PB3);
|
32 |
|
33 | bool led_PB4_An = false;
|
34 |
|
35 | while(1)
|
36 | {
|
37 |
|
38 | if ( !( PINB & (1 << PB3) ) )
|
39 | {
|
40 | led_PB4_An = !led_PB4_An;
|
41 | _delay_ms(500);
|
42 | }
|
43 |
|
44 | if ( led_PB4_An )
|
45 | {
|
46 | lade_PB4;
|
47 | _delay_us(1);
|
48 | entlade_PB4;
|
49 | _delay_us(1);
|
50 | }
|
51 | }
|
52 | }
|
Nun stellt sich mir allerdings die Frage wie die Frequenz berechnet
wird?
Genügt es die Zeit zu berechnen die der Kondensator zum laden benötigt
(t = C * R) , oder spielen dort noch andere Faktoren eine Rolle ?