Prośba o sprawdzenie kodu dla obsługi termopary k i obsługa wentylatora DC .


Założenia do programu .

Uruchamiamy , napis powitalny .
Następnie program wczytuje temperaturę przez termoparę k , przetwarza to max6675 i przekazuje na wyświetlacz .
Jeśli temperatura będzie równa lub przekroczy 40 stopni , następuje załączenie silnika i możliwość regulacji od 30% do 100% .
Jeżeli temp spadnie poniżej 40 stopni to silnik się wyłącza i nie ma możliwości włączenia go i regulacji nim .
Naciśnięcie przycisku powoduje zwiększenie bądź zmniejszenie wartości PWM o 25.
Może trzeba było sterowanie zrobić na podprogramie z wykorzystaniem Gosub ?

Z góry dziękuje .

Oto program , proszę o wskazanie błędów , jeśli takowe są .

 
 
 
'=========================================================
$regfile = "m8def.dat"
$crystal = 8000000
 
Config Spi = Soft , Din = Portd.6 , Dout = Portd.5 , Ss = None , Clock = Portd.4
Config Lcd = 20 * 2
Config Lcdmode = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
Cursor Off
 
 
 
Config Pinb.4 = Input                                       'linia PB4 jako wejściowa
Config Pinb.2 = Input                                       'linia PB2 jako wejściowa
Config Pinb.1 = Output                                      'linia PB1 (PC1A) jako wyjściowa
 
Config Pind.5 = Output
Config Pind.5 = Output
Config Pind.6 = Input
Config Portb = Output
 
 
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 64      
 
                                                            'konfiguracja Timer1 jako
                                                           'generatora sygnału PWM na
                                                            'wyjściu OC1A
Pwm1a = 75                                                  ' wartość początkowa                               
 
 
 
Sck1 Alias Portd.4                                        
Cs1 Alias Portd.5                                           
So1 Alias Portd.6  
 
S1 Alias Pinb.4                                             'przypisanie nazwie Pinb.4
                                                             'nazwy S1
S2 Alias Pinb.2                                             'przypisanie nazwie Pinb.2
                                                             'nazwy S2
 
 
 
Cs1 = 1
Sck1 = 0
So1 = 1
 
S1 = 1                                                 'dołączenie do linii PB4
                                                             'rezystora podciągającego
S2 = 1                                                 'dołączenie do linii PB2
 
 
Dim Temp As Word
Dim wartprocent AS Word 
Dim I As Byte                                               'zmienna, której wartość określa
                                                             'wypełnienie sygnału PWM                      
 
 
 
 
Cls
Lcd "Witaj"
Wait 2
Cls
Lcd "*XXXX*"                                          'powitanie
Lowerline
Lcd "YYYYYY"
Wait 4
Cls
 
 
Do
 
 
   Cs1 = 0
   Shiftin So1 , Sck1 , Temp , 0 , 16                                'odczyt temperatury z termopary k poprzez max6675
   Cs1 = 1
   Shift Temp , Right , 3
   Temp = Temp / 4                                                       'dzielone przez 4 dla uzyskania pełnego wyniku 
 
 
  wartprocent = I * 0.4
 
 
 
      Lcd "Temperatura:" ;Temp; "C"  
      Lowerline
      Lcd "Moc:" ; wartprocent ; "%"
 
    If Temp >= 40 Then
     Gosub Sterowanie
 
    End If
 
    If Temp < 40 Then
      Portb.1 = 0
    End If
 
 
 
   Loop
   End  
 
 
'===========Obsługa wentylatora DC================
 Sterowanie:
 
If S1 = 0 Then
  Waitms 25
   If S1 = 0 Then                               'jeśli nadal wciśnięty
      If I < 250 Then I = I + 25                'jeśli I mniejsze od 250 to zezwól na zwiększenie wartości I
      Pwm1a = I                                 'przepisz wartość I do rejestru Pwm1a
      Waitms 20
   End If
End If
 
 
If S2 = 0 Then
  Waitms 25
  If S2 = 0 Then                                'jeśli nadal wciśnięt
      If I > 0 Then I = I - 25                  'jeśli I większe od 0 to zezwól na zmniejszenie wartości I
      Pwm1a = I                                 'przepisz wartość I do rejestru Pwm1a
      Waitms 20
  End If
End If
Return
 




Portret użytkownika mirley

Re: Termopara

Jedyne co widze to brak jakiegokolwiek obuźnienia w Do loop a program cały działa tylko w do loop. Albo trzeba użyć timera do taktowania programu albo chociaż dac jakieś opuźnienie.

Sprawdź program w praktyce.

-

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 piolek3

Program sprawdzę napewno w

Program sprawdzę napewno w praktyce ale narazie chciałbym poradzić się kogoś mądrzejszego .

Ale opuźnienie pętli to gdzie mam dać , przed pętlą Do Loop , czy gdzieś w pętli .

Druga sprawa to wywoływanie podprogaramu , czy jest to poprawne ?

Portret użytkownika mirley

Re: Sterowanie wentylatora

Daj opóźnienie zaraz przed loop, wewnątrz pętli. Jasne że wewnątrz bo to co przed pętlą wykona się tylko raz

-

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 piolek3

A co to opuźnienie w pętli

A co to opuźnienie w pętli sprawi ? A co jeśli by go nie było ?

Portret użytkownika mirley

Re: delay

Do teraz goni w pętli z całą prędkością, nie ma nad tym żadnej kontroli.

-

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 piolek3

aha , a jakie opóźnienie dać

aha , a jakie opóźnienie dać najlepiej ( 100 ms ) ?

Portret użytkownika mirley

Re: 100ms

daj i sprawdź, to jest bezsensu że o tym piszemy, już dawno temu miałeś to sprawdzić. Programów nie da sie pisać na czuja.

-

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.