- sygnalizacja stanu baterii 9 V z podziałem na 6 poziomów,
- pobór prądu w stanie uśpienia ok. 10 μA,
- miniaturowa konstrukcja.
Na kanwie tych założeń powstał niezmiernie prosty projekt monitora baterii zasilającej aktywny przetwornik akustyczny gitary elektrycznej pod nazwą guitarVmeter. Urządzenie generuje serię krótkich dźwięków informujących o stanie baterii zasilającej (jej napięciu) wyłącznie podczas włączania przetwornika po czym przechodzi w stan uśpienia, by oszczędzać energię baterii.
Budowa i działanie
Schemat ideowy urządzenia pokazano na rysunku 1. Jest to bardzo prosty, by nie powiedzieć banalny, system, którego „sercem” jest miniaturowy mikrokontroler ATtiny10 firmy Microchip (dawniej Atmel). Taktowany jest wewnętrznym, wysokostabilnym generatorem RC o częstotliwości 1 MHz. Pomiar napięcia baterii zasilającej (poprzez dzielnik napięcia R2/R3) wykonywany jest przy pomocy wbudowanego przetwornika analogowo-cyfrowego.
Obsługa sygnalizatora akustycznego w postaci miniaturowego przetwornika piezoelektrycznego o częstotliwości rezonansowej ok. 4 kHz zrealizowana jest przy udziale układu czasowo-licznikowego Timer0 wbudowanego w strukturę mikrokontrolera. Timer pracując w trybie CTC generuje przebieg prostokątny na wyprowadzeniu PB1 (OC0B), do którego podłączono wspomniany wcześniej przetwornik piezoelektryczny.
Działanie całego urządzenia przedstawia się następująco. Tuż po włączeniu zasilania emitowany jest krótki dźwięk informujący o sprawności urządzenia. Następnie, po około pół sekundy, mierzone jest napięcie baterii zasilającej po czym generowanych jest kilka sygnałów akustycznych, które informują użytkownika o stanie baterii zasilającej, przy czym liczba emitowanych sygnałów dźwiękowych zależy od faktu o ile połówek Volta zmierzone napięcie zasilające jest mniejsze, niż znamionowe 9 V. Zgodnie z tym założeniem napięciu 8,5 V odpowiada jeden sygnał dźwiękowy, napięciu 8,0 V dwa sygnały dźwiękowe, napięciu 7,5 V trzy sygnały dźwiękowe i tak dalej aż do napięcia 6 V, któremu odpowiada 6 sygnałów dźwiękowych. Po wyemitowaniu sygnałów akustycznych urządzenie przechodzi w tryb uśpienia o bardzo niskim poborze mocy (pobór prądu rzędu 10 mA) i pozostaje w nim do czasu kolejnego wyłączenia i włączenia urządzenia.
Na listingu 1 pokazano ciało funkcji odpowiedzialnej za pomiar napięcia zasilającego urządzenie (wraz z niezbędnymi definicjami), zaś na listingu 2 prostą funkcję odpowiedzialną za generowanie dźwięku.
//Napięcie zasilające procesor będące jednocześnie
//referencją dla ADC [0.1V]
#define VCC 33UL
//Górny rezystor dzielnika napięcia baterii [kohm]
#define R1 280UL
//Dolny rezystor dzielnika napięcia baterii [kohm]
#define R2 162UL
//Wartość ADC dla napięcia
#define VADC_85 ((256*85*R2)/((R1+R2)*VCC)) //8.5V
#define VADC_80 ((256*80*R2)/((R1+R2)*VCC)) //8.0V
#define VADC_75 ((256*75*R2)/((R1+R2)*VCC)) //7.5V
#define VADC_70 ((256*70*R2)/((R1+R2)*VCC)) //7.0V
#define VADC_65 ((256*65*R2)/((R1+R2)*VCC)) //6.5V
#define VADC_60 ((256*60*R2)/((R1+R2)*VCC)) //6.0V
//Wartości ADC dla napięć od 8.5V do 6.0V
const uint8_t Voltages[] PROGMEM = {
VADC_85, VADC_80, VADC_75, VADC_70, VADC_65, VADC_60};
//Zwraca liczbę, która mówi o ile połówek Volta
//zmierzone napięcie jest mniejsze od 9V
uint8_t getVoltage(void) {
uint16_t Data = 0;
uint8_t Idx;
//8-krotny pomiar napięcia
for(Idx=0; Idx<8; ++Idx) {
//Uruchomienie konwersji
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADPS1)|(1<<ADPS0);
//Czekamy na zakończenie konwersji
while(ADCSRA & (1<<ADSC));
Data += ADCL;
}
Data /= 8;
//Szukamy w tabeli poziomów napięć wartości progowej
for(Idx=0; Idx<6; ++Idx)
if(Data > pgm_read_byte(&Voltages[Idx])) break;
return Idx;
}
Program obsługi aplikacji jest niezmiernie prosty i po skompilowaniu zajmuje niecałe 250 bajtów.
void Beep(uint8_t Number) {
OCR0A = 124; //4kHz
while(Number--) {
//Emitujemy krótkie dźwięki
//Zmiana stanu wyjścia OC0B
//podczas porównania
TCCR0A = (1<<COM0B0);
//Tryb CTC, Preskaler = 1 (1MHz)
TCCR0B = (1<<WGM02)|(1<<CS00);
_delay_ms(200);
//Normalny tryb pracy wyjścia OC0B
TCCR0A = 0;
//Zatrzymanie zegara Timera0
TCCR0B = 0;
_delay_ms(200);
}
}
Montaż i uruchomienie
Schemat montażowy urządzenia guitarVmeter pokazano na rysunku 2.
Zaprojektowano miniaturowy, dwustronny obwód drukowany z wyłącznym montażem elementów SMD, co było o tyle istotne, że układ przeznaczony jest do montażu w korpusie gitary elektrycznej. Montaż rozpoczynamy od wlutowania półprzewodników, następnie lutujemy elementy bierne a na samym końcu miniaturowy przetwornik piezoelektryczny. Poprawnie zmontowany układ nie wymaga żadnych regulacji i powinien działać tuż po włączeniu zasilania.
Robert Wołgajew, EP
- R1: 22 kΩ
- R2: 280 kΩ 1%
- R3: 162 kΩ 1%
- C1, C2: ceramiczny 1 μF
- U1: ATtiny10 (SOT23-6)
- U2: TS9011SCX (SOT23)
- BUZZ: piezo typu LPT9018BS-HL-03-4.0-12-R