Šoreiz autors izveidojis elektrisko principiālo shēmu, ar kuras palīdzību ir iespējams nodrošināt no 0 līdz 5 V regulējamu atbalsta spriegumu, izmantojot AD5241BR100 sērijas digitālo potenciometru, kura vadībai nepieciešams izmantot mikrokontrolieri, kuram ir nodrošināta I2C saskarne. Lietotājs, izmantojot divas spiedpogas, var ieregulēt atbalsta sprieguma vērtību robežās no 0 līdz 5 V. Viena spiedpoga ir paredzēta atbalsta sprieguma vērtības palielināšanai, bet otra ir paredzēta samazināšanai. Iekārta ir pārnēsājama, jo tās elektrobarošanai paredzēts izmantot 9 V bateriju.
1.1.att. Regulējama atbalsta sprieguma avota elektriskā principiālā shēma
Shēmas darbības princips ir balstīts uz ATMEGA328P sērijas mikrokontroliera, ar kura palīdzību tiek vadīts AD5241BR100 sērijas digitālais potenciometrs, kurš tālāk tiek izmantots, lai iestatītu atbalsta sprieguma vērtību robežās no 0 līdz 5 V.
Elektriskajā principiālajā shēmā tiek izmantots arī LT1078 sērijas operacionālais pastiprinātājs, kurš veic sprieguma atkārtotāja funkciju, lai netiktu slogots digitālais potenciometrs.
R6 rezistors tiek izmantots kā slodze operacionālā pastiprinātāja izejā, kur trokšņu mazināšanai tiek izmantots C1 kondensators.
C4 un C7 keramiskie kondensatori paredzēti parazītiskās induktivitātes mazināšanai, bet C5 un C6 elektrolītiskie kondensatori veic sprieguma pulsāciju "gludināšanu".
Digitālā potenciometra adreses iestatīšanai tiek izmantots R1 rezistors.
R2 rezistors nodrošina zema signāla līmeņa piesaisti pie digitālā potenciometra ieejas.
Augsta signāla līmeņa piesaistei paredzēti R3, R4, R5, R8 un R9 rezistori. Ja pie mikrokontroliera ieejām tiek izmantoti iekšējie atsaistes rezistori, tad nav nepieciešams izmantot ārējos.
D1 gaismas diode paredzēta +5 V elektrobarošanas indikācijai, bet R7 rezistors paredzēts tās aizsardzībai.
Viena no trim spiedpogām ir paredzēta mikrokontroliera atiestatīšanai, bet vēl divas ir paredzētas atbalsta sprieguma vērtības ieregulēšanai.
SW1 slēdzis paredzēts elektriskās principiālās shēmas ieslēgšanai un izslēgšanai.
int main(){
DDRD = 0xFC;
DDRB = 0xF0;
PORTD = 0x03;
int pretestiba=0, set_val=0;
DIG_POT_ON();
I2C_init();
while(1){
_delay_ms(10);
AD5241_set_R(set_val);
if(!(PIND & (1<<PIND1))){
set_val++;
if(set_val > 255){
set_val = 255;
}
else{
_delay_ms(100);
}
}
else if(!(PIND & (1<<PIND0))){
set_val--;
if(set_val < 0){
set_val = 0;
}
else{
_delay_ms(100);
}
}
else{
set_val = set_val;
}
}
return 0;
}