Sterownik wiatraka & bezpiecznik termiczny-attiny2313


Witam mam prośbę czy ktoś pomógł by mi napisać program do sterownika wentylatora sterowanego na podstawie temperatury.
przedstawiam schemat urządzenia oraz dedykowaną płytkę PCB:

Sterownik jest wykonany na attiny2313 i czujniku temperatury ds18s20 będzie on sterował wentylatorami radiatorów tranzystorów mocy w zasilaczu warsztatowym i odłączał trafo główne w celu odłączenia obciążenia. sterownik powinien mieć następujące właściwości:
-przy uruchomieniu sprawdzić stan czujnika i pokazaniu stanu na diodzie led(OK-dioda miga 3razy,źle-dioda świeci i włączany jest przekaźnik.
-od 30*C do 50*C(umownie do negocjacji) płynne sterowanie wentylatorem PWM(od 30*C min. obroty przy 50*C maks.) (dioda miga raz na 2sekundy)
-powyżej 70*C(do negocjacji) włączenie przekaźnika i wentylator na max(dioda świeci cały czas).
-po spadku temp do np. 40*C wyłączenie przekaźnika i dalsza normalna praca tj. płynne sterowanie wentylatorem.

Proszę o zainteresowanie i o pomoc.
Pozdrawiam




Portret użytkownika mirley

Re: Sterownik wentylatora

Popatrz na mój program do sterownika obrotów we wzmacniaczu 3x30W.... zacznij od tego pisać swój własny program. Co prawda program tam jest pod 2051 ale to nie powinno przyspożyc problemów.... Dodatkowo trzeba sie dokłądnie zapoznać z programem termometru uniwersalnego w wersji dla tiny2313

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika kaeltaz

Nie znam się na programowaniu

Nie znam się na programowaniu kompletnie jestem zielony w tych sprawach dlatego proszę o pomoc. Kiedyś czytałem jakiś poradnik w internecie na temat programowania w C ale nie zrozumiałem tego (mam 15 lat).

Portret użytkownika mirley

Re: Sterownik wentylatora

moje programy są w bascomie więc poczytaj najpierw kurs mikroprocesorowa ośla łaczka (do znalezienia w internecie) a potem pogadamy na temat tego sterownika

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika kaeltaz

Wykombinowałem początek

Wykombinowałem początek programu. Czy jest właściwy?

$regfile = "attiny2313.dat"
$crystal = 16000000
 
Config Pind.4 = Output
Config Pind.5 = Output
Cinfig Pinb.3 = Output
Config 1wire = Pind.6
Dim Ds(8) As Byte
 
1wreset
1wwrite &H33
Ds(1) = 1wread(8):
 
Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
Enable Interrupts
 
FAN Alias Portb.3

Portret użytkownika mirley

Re: Wentylator

na poczatek zadumaj się nad tym:

'****************************
           'Konfiguracja
'****************************
$regfile = "attiny2313.dat"
$crystal = 12000000
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B11111111 : Portd = &B11111111
 
Config 1wire = Pind.5
 
Config Timer0 = Timer , Prescale = 64
Enable Timer0 : On Timer0 Przerwanie0
 
FAN Alias Portb.3
 
Enable Interrupts
'****************************
      'Zmienne
'****************************
Dim Lsb As Byte
Dim Msb As Byte
Dim Co4ms As Byte , Co100ms As Byte , Co1s As Byte
Dim Tempa As Word
Dim went_licz as byte
Dim Went as byte
 
Dim Zezw_ster As Bit
Dim Pomiar_odczyt As Bit
'****************************
      'Wartosci Poczatkowe
'****************************
Reset Pomiar_odczyt
'****************************
      'Petla glowna
'****************************
Do
 
If Zezw_ster = 1 Then
  Reset Zezw_ster                                           'co 100ms
 
  went = tempa - 30
End If
 
Loop
End
'****************************
      'Przerwanie timer0
'****************************
Przerwanie0:
Timer0 = 5
 
incr went_licz
if went_licz = 20 then went_licz = 0
if went < went_licz then Set FAN else reset fan
 
Incr Co4ms
 If Co4ms = 3 Then
   Co4ms = 0
   '***************************************  co 4ms
   Incr Co100ms
   If Co100ms = 25 Then
     Co100ms = 0
     '*************************************** co 100 ms
	 Set Zezw_ster
     Incr Co1s
     If Co1s = 7 Then
       Co1s = 0
       '*************************************** co 1s
       Pomiar_odczyt = Not Pomiar_odczyt
 
       Disable Interrupts
       1wreset
 
       If Pomiar_odczyt = 1 Then
        1wwrite &HCC
        1wwrite &H44
       Else
        1wwrite &HCC
        1wwrite &HBE
        Lsb = 1wread():
        Msb = 1wread():
 
        Tempa = Msb * 256
        Tempa = Tempa + Lsb
        Tempa = Tempa / 2
       End If
 
       Enable Interrupts
       '***************************************
     End If
     '***************************************
   End If
   '***************************************
 End If
 
Return

Nie sprawdzałem czy się kompiluje

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika kaeltaz

Witam dodam małą poprawkę

Witam dodam małą poprawkę 1wire jest na pind.6 a nie na pind.5. A i nie widzę komend sterowania diodą led mogę dodać na początku takie coś LED Alias Portd.5

$regfile = "attiny2313.dat"
$crystal = 12000000
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B11111111 : Portd = &B11111111
 
Config 1wire = Pind.6
 
Config Timer0 = Timer , Prescale = 64
Enable Timer0 : On Timer0 Przerwanie0
 
FAN Alias Portb.3
 
Enable Interrupts
'****************************
      'Zmienne
'****************************
Dim Lsb As Byte
Dim Msb As Byte
Dim Co4ms As Byte , Co100ms As Byte , Co1s As Byte
Dim Tempa As Word
Dim went_licz as byte
Dim Went as byte
 
Dim Zezw_ster As Bit
Dim Pomiar_odczyt As Bit
'****************************
      'Wartosci Poczatkowe
'****************************
Reset Pomiar_odczyt
'****************************
      'Petla glowna
'****************************
Do
 
If Zezw_ster = 1 Then
  Reset Zezw_ster                                           'co 100ms
 
  went = tempa - 30
End If
 
Loop
End
'****************************
      'Przerwanie timer0
'****************************
Przerwanie0:
Timer0 = 5
 
incr went_licz
if went_licz = 20 then went_licz = 0
if went < went_licz then Set FAN else reset fan
 
Incr Co4ms
 If Co4ms = 3 Then
   Co4ms = 0
   '***************************************  co 4ms
   Incr Co100ms
   If Co100ms = 25 Then
     Co100ms = 0
     '*************************************** co 100 ms
	 Set Zezw_ster
     Incr Co1s
     If Co1s = 7 Then
       Co1s = 0
       '*************************************** co 1s
       Pomiar_odczyt = Not Pomiar_odczyt
 
       Disable Interrupts
       1wreset
 
       If Pomiar_odczyt = 1 Then
        1wwrite &HCC
        1wwrite &H44
       Else
        1wwrite &HCC
        1wwrite &HBE
        Lsb = 1wread():
        Msb = 1wread():
 
        Tempa = Msb * 256
        Tempa = Tempa + Lsb
        Tempa = Tempa / 2
       End If
 
       Enable Interrupts
       '***************************************
     End If
     '***************************************
   End If
   '***************************************
 End If
 
Return

Portret użytkownika mirley

Re: Wentylator

nie ma sterowania diodą bo miałeś prowadzić czy w ogóle to działa... inne rzeczy dopiszesz jak zrozumiesz jak działa podstawowe sterowanie

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.