Inderdaad een flex print met daarop de leds al gesoldeerd. 0402 zou ideaal zijn, maar het probleem is de groene leds. De precieze kleur die ik nodig heb (rond de 510nm) is in 0402 vrijwel niet verkrijgbaar.
Ik zat net even bij Mouser te zoeken, en met 520nm is er wel een groene 0402 LED. Nummer 710-150040GS73220. Die zou je bij JLCPCB gewoon moeten kunnen bestellen. Is dat wat?
Mooi werk Dennis, ben onder de indruk van je parametrische benadering. Heb zelf ook SBB-seinen geprint, ‘t blijft een beetje tricky vanwege de kleine afmetingen. Ik zelf heb de seinen van bedrade 0402’s voorzien, de draden vallen tussen de mast en vallen niet erg op. Heb ook aan flex-pcb gedacht maar weet niet hoe dat op te lossen en vraag me af hoeveel print banen er naast elkaar passen, deze kunnen aan voor- en achterzijde van een flex-pcb? Succes met je seinen-project en ben benieuwd naar het vervolg.
De BC847QASZ die ik gebruik mag maximaal 350mW dissiperen. Laten we even uitgaan van 150mW per transistor. Bij 5mA betekent dat maximaal 30V. Dus dan heb ik eigenlijk geen 430R weerstand überhaupt meer nodig, toch?
Ik wil denk ik toch vasthouden aan de hardware PWM. Vind het ook leuk om het op die manier op te lossen en in de code met de timers te werken en kijken hoe e.e.a. functioneert.
void updateTrackPower(){ uint32_t currentTime = micros() ; // vervang micros door een ISR if( currentTime - prevTime >= 200 ) // 50 HZ { prevTime = currentTime; if( !state ) { PORTB = 0x00 ; // turn off all track pins at once PORTD = 0x00 ; } else if( counter == 0 ) // if counter reaches 100, reset it to 0 and enable the track power pins, begin of cycle { PORTB = 0xFF & track_mask_1 ; // turn on ALL track at the same time. PORTD = 0xFF & track_mask_2 ; // With an AND mask you can pick which tracks go ON and which go OFF // etc } if( counter == dutyCycle[ 0] ) PORTB &= ~TRACK_1_MASK ; // 8 bit comparison are somewhat fast, followed by direct port manipulation if( counter == dutyCycle[ 1] ) PORTB &= ~TRACK_2_MASK ; if( counter == dutyCycle[ 2] ) PORTB &= ~TRACK_3_MASK ; if( counter == dutyCycle[ 3] ) PORTB &= ~TRACK_4_MASK ; if( counter == dutyCycle[ 4] ) PORTB &= ~TRACK_5_MASK ; if( counter == dutyCycle[ 5] ) PORTB &= ~TRACK_6_MASK ; if( counter == dutyCycle[ 6] ) PORTD &= ~TRACK_7_MASK ; if( counter == dutyCycle[ 7] ) PORTD &= ~TRACK_8_MASK ; if( counter == dutyCycle[ 8] ) PORTD &= ~TRACK_9_MASK ; if( counter == dutyCycle[ 9] ) PORTD &= ~TRACK_10_MASK ; if( counter == dutyCycle[10] ) PORTD &= ~TRACK_11_MASK ; if( counter == dutyCycle[11] ) PORTD &= ~TRACK_12_MASK ; if( ++counter > 100) counter = 0 ; // 100 speed steps }}
Ik begrijp alleen niet waarom jij schrijft "Dit belast je 5V circuit zo zwaar, dat je spanningsregulator dit niet gaat overleven." terwijl de transistors gevoed worden door het 16V circuit. Kun je me dat nog eens uitleggen?
. Meestal neem ik gewoon 1mA aan, maar afhankelijk van de transistor kan minder ook.