prostownik do ładowania akumulatorów


witam, w związku z tym ,że zima już nie daleko postanowiłem zbudować dobry prostownik do ładowania akumulatorów samochodowych. Czy może ktoś z was posiada jakieś ciekawe rozwiązania ze sterowaniem przez mikroprocesor. Mam już jakąś koncepcję jednak cały czas jeszcze szukam rozwiązań. Schemat już stworzyłem, zamiast bocznika prawdopodobnie wstawię specjalistyczny scalaczek do pomiaru prądu, regulacja fazowa po stronie wtórnej, poproszę o sugestie, tyrystor 40A .




Portret użytkownika EDC

Odp. Prostownik

Cześć. Na początek odłącz AREF koniecznie od zasilania.
Zerknij sobie na mój lekko poprawiony artykuł na temat pomiarów napięć, to zrozumiesz dlaczego.
Do tego, dodał bym taki bajer za 50gr.

Mam tak zrobione w moim sterowniku, bo jak nadchodziła noc a podświetlanie masz włączone to tak świeci że nie zaśniesz a nawet myślisz , że to szkoda prądu żeby tak świecił. Za to jak masz podświetlanie po naciśnięciu czegoś to w dzień nic nie widzisz. Tym sposobem z obrazka, wchodzisz do pokoju widzisz wszystko, gasisz światło, wyświetlacz też. Nie kusi złodziei jeśli zostawisz prostownik w garażu.. W słoneczny dzień widzisz wszystko..same plusy :D
Bocznik to takich zastosowań by wystarczył, ale obydwa wejścia ADC musza mieć dzielniki napięć i koniecznie zabezpieczenia w postaci diody Zenera bo mierzyłem taki prostownik nie raz i bez obciążenia jest tam nieróżowo :P

-

BARTek
Moja strona

Portret użytkownika marekszy

Prostownik

Ok, schemat poprawiłem (zasilania), odnośnie bocznika to jednak go pominę i wsawię czujnik prądu ACS712ELCTR-20A-T zasilany z 5V (fajna sprawa), co do zenerek masz rację ,dołożę. Niedługo przysiądę do programu i testów wtedy pewnie zaczną się schody, ale zobaczymy.Ściemnianie jak najbardziej trafne.

Portret użytkownika marekszy

prostownik

Ruszam dalej z prostownikiem, mam wstępnie napisany i sprawdzony program, regulacja fazowa po stronie wtórnej ,będę systematycznie go przerabiał do w pełni automatycznego prostownika, teraz mam pytanie czy da się wyświetlić prąd za pomocą dużych cyfr

'*****************prostownikV2 dziala regulacja i pomiar V/A,termometr*********
 
$regfile = "m8def.dat"
$crystal = 12000000
$hwstack = 64
$swstack = 64
$framesize = 64
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portc = &B11111100 : Portc = &B11111100
Config Portd = &B11000000 : Portd = &B10111111
 
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.5 , Db7 = Portb.2 , E = Portb.0 , Rs = Portb.1
Config Lcd = 20 * 2
Cursor Off : Cls
 
Config Timer0 = Timer , Prescale = 256
Enable Timer0 : On Timer0 Prztimer0
 
Config Timer1 = Timer , Prescale = 8
Config Int0 = Rising                                        'rising wyzwala zbocze narastające
 
Config Adc = Single , Prescaler = Auto , Reference = Avcc   'Zrodlem odniesienia jest napiecie zasilania
Start Adc                                                   ' tu wlaczamy ADC
 
 
Stop Timer1
On Timer1 Irq_timer1
On Int0 Zero                                                'detekcja przejścia przez 0
Enable Timer1
Enable Int0
Enable Interrupts
 
 
 
Bramka Alias Portd.7
Buzer Alias Portd.6
Wentylator Alias Portc.5
'*********************************************************
Dim Flaga_4ms As Bit , Flaga_100ms As Bit , Flaga_1s As Bit
Dim Dzielnik As Byte , Dzielnik2 As Byte
Dim Moc As Word
Dim Table As Word
Dim Procent As Byte
 
Dim Sw As Byte , Stan_sw As Byte , Licznik_sw As Byte
Dim Poz_menu As Byte
 
'Deklaracja wszystkich zmiennych potrzebnych do pracy programu termostatu
Config 1wire = Portd.3                                      ' konfiguracja portu PD.3 jako wejścia magistrali 1-wire
 
Dim Temp As Word , Hsingle As Word , T1_word As Word
Dim Odczyt(2) As Byte , T As Integer , T1 As Single , Napis As String * 5
Dim Alarm As Byte
 
'deklaracje do pomiaru napiecia
 
Dim P As Byte                                               'licznik dla ilosci pomiarow
Dim Probka As Word                                          'wartosc odczytana z przylozonego do ADC
Dim Napiecie As Word                                        'dodaje do siebie kolejne odczyty
Dim Napiecie_u As Single                                    'napiecie usrednione single bo z przecinkiem
Dim Hsingle_1 As Single                                     'pomocnicza zmienna
Dim Volt As String * 5                                      'zmienna "tekstowa" 5 znakow ksztaltowana przez "fusing"
Dim Napiecie_alarm As Word                                  'wylaczenie po osiagnieciu np.15V
Const P_max = 20                                            'ilosc pomiarow do usredniania
 
'deklaracje do pomiaru pradu
Dim X As Byte                                               'licznik dla ilosci pomiarow
Dim Probka_1 As Word                                        'wartosc odczytana z przylozonego do ADC
Dim Prad As Word                                            'dodaje do siebie kolejne odczyty
Dim Prad_a As Single                                        'napiecie usrednione single bo z przecinkiem
Dim Hsingle_2 As Single                                     'pomocnicza zmienna
Dim Amper As String * 5                                     'zmienna "tekstowa" 5 znakow ksztaltowana przez "fusing"
Const X_max = 20                                            'ilosc pomiarow do usredniania
 
'wczytanie danych z pamieci
Readeeprom Moc , 6
If Moc > 100 Then Moc = 100
If Moc < 0 Then Moc = 0
Readeeprom Temp , 8
If Temp > 100 Then Temp = 45
 
'niech DS ma już gotowa temp
 1wreset
 1wwrite &HCC
 1wwrite &H44
'**********************************************************
Lcd "PROSTOWNIK SAM. 12V "
Lowerline
Lcd "   wersja nr.2  "
Wait 2
Cls
'**********************************************************
 
Do
 
If Flaga_4ms = 1 Then                                       'co 4ms
     Flaga_4ms = 0
    'co ma byc co 4ms
     Gosub Przyciski
     Gosub Pomiar_v
     Gosub Pomiar_a
  End If
   If Flaga_100ms = 1 Then                                  ' co 100ms
      Flaga_100ms = 0
     'co ma byc po 100ms
     Gosub Wyswietlanie
 
   End If
    If Flaga_1s = 1 Then                                    'co 1s
       Flaga_1s = 0
       'co ma byc co 1s
      Gosub Temperatura
      Gosub Napiecie_1
      Gosub Prad_1
    End If
 
Loop
End
'***********************Przerwanie timer0**************************************
Prztimer0:
 Timer0 = 70
 Flaga_4ms = 1
 Incr Dzielnik
 If Dzielnik = 25 Then                                      '25*4ms = 100ms
   Dzielnik = 0
   Flaga_100ms = 1
   Incr Dzielnik2
   If Dzielnik2 = 10 Then                                   '10*100ms=1s'
    Dzielnik2 = 0
    Flaga_1s = 1
   End If
 End If
Return
'**********************sterowanie tyrystorem***********************************
 
Irq_timer1:
 Bramka = 0
 Stop Timer1
Return
 
Zero:
 Bramka = 1
 Table = Lookup(moc , Tablica)
 Load Timer1 , Table
 
 Start Timer1
Return
 
'************************podprogram pom.temperatury****************************
 
Temperatura:
 
  1wreset                                                   ' tu czytasz temperature
  1wwrite &HCC
  1wwrite &HBE
   Odczyt(1) = 1wread(2)
   T = Odczyt(2)
  Shift T , Left , 8
   T = T + Odczyt(1)
   T1 = T * 0.0625
   T1_word = T1
 
 
  If Poz_menu <> 5 Then                                     ' wyswietla co 1sec chyba że ustawiasz temp
    Napis = Fusing(t1 , "#.#")
   ' Locate 2 , 13
   'Lcd "T:" ; Napis ; "" ; Chr(223) ; "C"                   'wyświetl wynik ze zmiennej Word temperatura
  End If
 
 1wreset                                                    ' tu kazesz DS`owi przygotować nowy odczyt
 If Err = 0 Then
  1wwrite &HCC                                              ' i za sekunde juz będzie gotowy
  1wwrite &H44
  Alarm = 0
  Else
  Alarm = 1
 End If
Return
 
'******************************konw.napiecia***********************************
Napiecie_1:
Hsingle_1 = Napiecie_u * 0.0049
  Hsingle_1 = Hsingle_1 * 6
  Volt = Fusing(hsingle_1 , "#.&")
Return
 
'******************************konw.pradu**************************************
Prad_1:
Hsingle_2 = Prad_a * 0.0049
  Hsingle_2 = Hsingle_2 * 10
  Amper = Fusing(hsingle_2 , "#.&")
Return
'**********************************pomiar V************************************
Pomiar_v:
 
Incr P                                                      'zwiekszanie licznika dla pomiarow
 Probka = Getadc(0)                                         'zmierz na Pinie 0 ADC
 Napiecie = Napiecie + Probka                               'dodaj kolejne pomiary
  If P >= P_max Then                                        'gdy pomiarow 20
      P = 0
    Napiecie_u = Napiecie / P_max                           'podziel cala sume przez ilosc pomiarow (usrednij)
    Napiecie = 0                                            'zeruj zmienna by dodawac nowe
  End If
 
Napiecie_alarm = Hsingle_1 * 10
If Napiecie_alarm > 151 Then                                '151 dla 15,1V
  Buzer = 1
  'Moc = 10                                                  'ograniczyc do 15V
  Else
  'Readeeprom Moc , 6
  Buzer = 0
End If
Return
''***********************************pomiar A**********************************
Pomiar_a:
 
Incr X                                                      'zwiekszanie licznika dla pomiarow
 Probka_1 = Getadc(1)                                       'zmierz na Pinie 0 ADC
 Prad = Prad + Probka_1                                     'dodaj kolejne pomiary
  If X >= X_max Then                                        'gdy pomiarow 20
      X = 0
    Prad_a = Prad / X_max                                   'podziel cala sume przez ilosc pomiarow (usrednij)
    Prad = 0                                                'zeruj zmienna by dodawac nowe
  End If
 
Return
'**********************************wyswietlanie********************************
Wyswietlanie:
Select Case Poz_menu
 
 Case 0:
  Locate 1 , 1 : Lcd "I:" ; Amper ; "A     "
  Locate 2 , 1 : Lcd "U:" ; Volt ; "V      "
  Locate 1 , 13 : Lcd "Moc:" ; Procent ; "%"
  Procent = Moc * 1                                         '20 kroków skok co 5%
  Locate 2 , 13 : Lcd "T:" ; Napis ; "" ; Chr(223) ; "C"
 
 Case 1:
  Locate 1 , 1
  Lcd "Moc:> " ; Procent ; "% mocy                "
  Procent = Moc * 1
  Locate 2 , 1 : Lcd "                     "
 Case 2:
  Locate 1 , 1
  Lcd "Temp:> " ; Temp ; "" ; Chr(223) ; "C" ; "            "
  Locate 2 , 1 : Lcd "                     "
 
 Case 3:
  Locate 1 , 1 : Lcd "        CASE_3      "
  Locate 2 , 1 : Lcd "                    "
End Select
Return
'************************************przyciski*********************************
Przyciski:
Sw = Pind And &B00110011                                    'maskowanie nieużywanych pinów
 
If Sw <> &B00110011 And Stan_sw = Sw Then
    Incr Licznik_sw
    If Licznik_sw = 100 Then
      Licznik_sw = 0
      Select Case Stan_sw
 
 
        Case &B00010011:                                    'SW_1 poz menu(4 pozycje 0/1/2/3) portD.5
           Incr Poz_menu
           If Poz_menu = 4 Then
             Poz_menu = 0
             Writeeeprom Temp , 8
             Writeeeprom Moc , 6
           End If
 
        Case &B00110010                                     'SW_2  (+) portD.0
          Select Case Poz_menu
            Case 1:
              If Moc < 100 Then Incr Moc
              If Moc = 101 Then Moc = 100
            Case 2:
              If Temp < 100 Then Incr Temp                  '
            Case 3:
 
          End Select
 
        Case &B00110001                                     'SW_4  (-) portD.1
          Select Case Poz_menu
            Case 1:
              If Moc > 0 Then Decr Moc
              If Moc = -1 Then Moc = 0
            Case 2:
              If Temp > 0 Then Decr Temp
            Case 3:
 
         End Select
      End Select
    End If
  Else
    Stan_sw = Sw
    Licznik_sw = 80
  End If
Return
 
'****************************tabela do reg.fazowej*****************************
Tablica:
Data 19000%
Data 18725% , 18193% , 17784% , 17436% , 17129% , 16849% , 16591% , 16349% , 16121% , 15903%
Data 15696% , 15496% , 15303% , 15117% , 14936% , 14760% , 14589% , 14421% , 14257% , 14097%
Data 13939% , 13784% , 13632% , 13481% , 13333% , 13187% , 13043% , 12900% , 12759% , 12620%
Data 12482% , 12344% , 12209% , 12074% , 11940% , 11807% , 11674% , 11543% , 11412% , 11282%
Data 11152% , 11023% , 10894% , 10766% , 10638% , 10510% , 10382% , 10255% , 10127% , 10000%
Data 9873% , 9745% , 9618% , 9490% , 9362% , 9234% , 9106% , 8977% , 8848% , 8718%
Data 8588% , 8457% , 8326% , 8193% , 8060% , 7926% , 7791% , 7656% , 7518% , 7380%
Data 7241% , 7100% , 6957% , 6813% , 6667% , 6519% , 6368% , 6216% , 6061% , 5903%
Data 5743% , 5579% , 5411% , 5240% , 5064% , 4883% , 4697% , 4504% , 4304% , 4097%
Data 3879% , 3651% , 3409% , 3151% , 2871% , 2564% , 2216% , 1807% , 1275% , 10%
'Data 5200%
'Data 5000% , 4800% , 4600% , 4400% , 4300% , 4200% , 4100% , 4000% , 3800% , 3600%
'Data 3400% , 3200% , 2900% , 2600% , 2200% , 1900% , 1500% , 1000% , 500% , 10 %

chodzi mi o to:
'******************************konw.pradu**************************************
Prad_1:
Hsingle_2 = Prad_a * 0.0049
  Hsingle_2 = Hsingle_2 * 10
  Amper = Fusing(hsingle_2 , "#.&")
Return

tabela do regulacji fazowej będzie zmieniona ponieważ nie potrzebuję regulacji od zera ,a prawdopodobnie 40% górnej części,ale jak pisałem to później, w trakcie testów.
Zmienił się trochę schemat,jak dokończę nowy to podmienię

Portret użytkownika EDC

Odp. Prostownik

No da się. Napisałem taką symulacje. Żeby deklaracje wszystkich znaków nie musiały być na początku kodu zapakowałem je w Sub i umieściłem na końcu. To taka kosmetyka która prawie nic nie kosztuje poza jednym skokiem na początku.
Żeby uzyskać jakaś zmienną z przecinkiem podzieliłem tam przykładowe wartości. Całość działa ale myślę że żeby miec ładne A i V to trzeba będzie nowe ładne czcionki zrobić :P Takie jak te na fotach w temacie dużych cyfr. Teraz tylko tak na szybko coś zrobiłem (te A).

$sim
$regfile = "m8def.dat"
$crystal = 12000000
$hwstack = 64
$swstack = 64
$framesize = 64
 
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.5 , Db7 = Portb.2 , E = Portb.0 , Rs = Portb.1
Config Lcd = 20 * 2
 
Gosub Znaki
Gosub Tablica
Cursor Off : Cls
 
 
Dim Hsingle_2 As Single
Dim Amper As String * 5
 
Dim Convert As Word , Pierwsza As Word , Druga As Word , Trzecia As Word
Dim Linia_g(12) As String * 3 , Linia_d(12) As String * 3
 
  Hsingle_2 = 95 / 3                                        ' tylko do testow
  Amper = Fusing(hsingle_2 , "#.&")
  Lcd Amper
 
  Convert = Hsingle_2 * 10                                  'przesuniecie przecinka  w prawo
  Trzecia = Convert Mod 10
   If Trzecia = 0 Then Trzecia = 10
  Pierwsza = Convert / 10
  Druga = Pierwsza Mod 10
   If Druga = 0 Then Druga = 10
  Pierwsza = Pierwsza / 10
   If Pierwsza = 0 Then Pierwsza = 10
 
            Locate 1 , 6
             Lcd Linia_g(pierwsza) ; Linia_g(druga) ; " " ; Linia_g(trzecia) ; Linia_g(11)
 
            Locate 2 , 6
             Lcd Linia_d(pierwsza) ; Linia_d(druga) ; Chr(161) ; Linia_d(trzecia) ; Linia_d(11)
 
 
 
End
'*** KONIEC ***
 
 
Znaki:
Deflcdchar 1 , 28 , 24 , 32 , 32 , 32 , 32 , 24 , 28        ' prawy naroznik
Deflcdchar 2 , 31 , 31 , 32 , 32 , 32 , 32 , 32 , 32        ' gorna kreseczka
Deflcdchar 3 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 31        ' dolna kreseczka
Deflcdchar 4 , 31 , 31 , 32 , 32 , 32 , 32 , 31 , 31        ' dwie kreseczki
Deflcdchar 5 , 28 , 30 , 30 , 30 , 30 , 30 , 30 , 28        ' prawa belka
Deflcdchar 6 , 7 , 15 , 15 , 15 , 15 , 15 , 15 , 7          ' lewa belka
Deflcdchar 7 , 7 , 3 , 32 , 32 , 32 , 32 , 3 , 7            ' lewy naroznik
Return
 
Tablica:
'=========TABLICA na DUŻE CYFRY===========
'Cyfra 0
Linia_g(10) = Chr(6) + Chr(2) + Chr(5)
Linia_d(10) = Chr(6) + Chr(3) + Chr(5)
'Cyfra 1
Linia_g(1) = "  " + Chr(5)
Linia_d(1) = "  " + Chr(5)
'Cyfra 2
Linia_g(2) = Chr(7) + Chr(4) + Chr(5)
Linia_d(2) = Chr(6) + Chr(3) + Chr(3)
'Cyfra 3
Linia_g(3) = " " + Chr(4) + Chr(5)
Linia_d(3) = " " + Chr(3) + Chr(5)
'Cyfra 4
Linia_g(4) = Chr(6) + Chr(3) + Chr(5)
Linia_d(4) = "  " + Chr(5)
'Cyfra 5
Linia_g(5) = Chr(6) + Chr(4) + Chr(1)
Linia_d(5) = Chr(3) + Chr(3) + Chr(5)
'Cyfra 6
Linia_g(6) = Chr(6) + Chr(4) + Chr(1)
Linia_d(6) = Chr(6) + Chr(3) + Chr(5)
'Cyfra 7
Linia_g(7) = Chr(6) + Chr(2) + Chr(5)
Linia_d(7) = "  " + Chr(5)
'Cyfra 8
Linia_g(8) = Chr(6) + Chr(4) + Chr(5)
Linia_d(8) = Chr(6) + Chr(3) + Chr(5)
'Cyfra 9
Linia_g(9) = Chr(6) + Chr(4) + Chr(5)
Linia_d(9) = Chr(3) + Chr(3) + Chr(5)
'Litera A
Linia_g(11) = Chr(6) + Chr(4) + Chr(5)
Linia_d(11) = Chr(255) + " " + Chr(255)
Return

-

BARTek
Moja strona

Portret użytkownika marekszy

Prostownik

po sprawdzeniu wyświetla prawidłowo tylko jak wyświetlić pomiar?jeszcze taka sugestia do wyświetlania dużych cyfr,czy nie da się zrobić aby np.cyfra "1" zajmowała po jednym polu z każej lini,cyfra"3" dwa pola ,bo w tej chwili każda zajmuje po trzy(cyfra "1" to dwa pola puste i w trzecim wyświetlana).Prąd będzie max do 19,9A także niepotrzebnie marnuję po dwa pola puste z przodu.Napięcie pozostawię wyświetlane tradycyjnie (nie jest takie ważne).Pomiar prądu odbywa się przez czujnik prądu (taki malutki scalaczek do 20A, 100mV/A).
Teraz dojżałem, czy usunięcie pustych pól w deklaracji znaków załatwi problem i wyświetlanie będzie prawidłowe?

Portret użytkownika EDC

Odp.Prostownik

Zrób jakiś rysunek poglądowy jak to chcesz mieć rozmieszczone i kiedy. Tę jedynkę przed wartością powyżej dziesięć trzeba tylko inaczej zrobić. Coś na styl "znak minus".

-

BARTek
Moja strona

Portret użytkownika marekszy

Prostownik

Zmieniłem schemat w pierwszym poście na aktualny.
Wyświetlanie potrzebuję w

Wyswietlanie:
Select Case Poz_menu
 
 Case 0:
  Locate 1 , 1 : Lcd "I:" ; Amper ; "A     "
  Locate 2 , 1 : Lcd "U:" ; Volt ; "V      "
  Locate 1 , 13 : Lcd "Moc:" ; Procent ; "%"
  Procent = Moc * 1                                         '20 kroków skok co 5%
  Locate 2 , 13 : Lcd "T:" ; Napis ; "" ; Chr(223) ; "C"

ponieważ dalej mam (będę miał) ustawianie parametrów(temp.załączania wentylatora,regulację ręczną prądu i napięcia-zał./wył. ładowania).W takim zapisie to nawet działa.Później będę chciał dołożyć ustawianie zadanego prądu (np.I=5A a w przypadku gdy różny od zadanego to Incr Moc lub Decr Moc)

trochę pozmieniałem i teraz to wygląda jak na zdjęciu,trzeba się tylko pozbyć wyświetlania zera z przodu.
jest jeszcze problem ,nie wiem dlaczego wyświetla mi pomiar prądu w normalnym rozmiarze za dużymi cyframi,ale na razie załaatwiłem to spacjami
Prad_1:
  Hsingle_2 = Prad_a * 0.0049
  Hsingle_2 = Hsingle_2 * 10
  Amper = Fusing(hsingle_2 , "#.&")
  Lcd Amper
 
  Convert = Hsingle_2 * 10                                  'przesuniecie przecinka  w prawo
  Trzecia = Convert Mod 10
   If Trzecia = 0 Then Trzecia = 10
  Pierwsza = Convert / 10
  Druga = Pierwsza Mod 10
   If Druga = 0 Then Druga = 10
  Pierwsza = Pierwsza / 10
   If Pierwsza = 0 Then Pierwsza = 10
 
Return

dla czego na końcu miałeś END,nie chciało to mi hulać,z Return jest dobrze
Wyswietlanie:
Select Case Poz_menu
 
 Case 0:
   Locate 1 , 1
   Lcd Linia_g(pierwsza) ; Linia_g(druga) ; " " ; Linia_g(trzecia) ; Linia_g(11)
   Locate 2 , 1
   Lcd Linia_d(pierwsza) ; Linia_d(druga) ; Chr(161) ; Linia_d(trzecia) ; Linia_d(11)
   Locate 1 , 15 : Lcd "U:" ; Volt ; "V      "
   Locate 2 , 15 : Lcd "I:" ; Procent ; "%  "
   Procent = Moc * 1   

Tablica_2:
'=========TABLICA na DUŻE CYFRY===========
'Cyfra 0
Linia_g(10) = Chr(6) + Chr(2) + Chr(5)
Linia_d(10) = Chr(6) + Chr(3) + Chr(5)
'Cyfra 1
Linia_g(1) = " " + Chr(5)
Linia_d(1) = " " + Chr(5)
'Cyfra 2
Linia_g(2) = Chr(7) + Chr(4) + Chr(5)
Linia_d(2) = Chr(6) + Chr(3) + Chr(3)
'Cyfra 3
Linia_g(3) = " " + Chr(4) + Chr(5)
Linia_d(3) = " " + Chr(3) + Chr(5)
'Cyfra 4
Linia_g(4) = Chr(6) + Chr(3) + Chr(5)
Linia_d(4) = "  " + Chr(5)
'Cyfra 5
Linia_g(5) = Chr(6) + Chr(4) + Chr(1)
Linia_d(5) = Chr(3) + Chr(3) + Chr(5)
'Cyfra 6
Linia_g(6) = Chr(6) + Chr(4) + Chr(1)
Linia_d(6) = Chr(6) + Chr(3) + Chr(5)
'Cyfra 7
Linia_g(7) = Chr(6) + Chr(2) + Chr(5)
Linia_d(7) = "  " + Chr(5)
'Cyfra 8
Linia_g(8) = Chr(6) + Chr(4) + Chr(5)
Linia_d(8) = Chr(6) + Chr(3) + Chr(5)
'Cyfra 9
Linia_g(9) = Chr(6) + Chr(4) + Chr(5)
Linia_d(9) = Chr(3) + Chr(3) + Chr(5)
'Litera A
Linia_g(11) = Chr(6) + Chr(4) + Chr(5) + " "
Linia_d(11) = Chr(255) + " " + Chr(255) + " "
Return 

Portret użytkownika EDC

Odp. Prostownik

Dziś walczę z czymś co musi być na jutro gotowe, ale zrobię te jedynke z przodu później tak żeby było git :D

"End" w moim przypadku był dla tego, że to była tylko symulacja bez żadnych nowych świeżych wyników. Niepotrzebna mi była pętla. Miało wyświetlić i się skończyć.
Co do tego wyświetlania się wyniku małego to usuń te "Lcd Amper". To też miało tylko pokazać mały i duży wynik. Jeśli nie używasz wyniku w postaci małej to możesz usunąć tez te "Fusing", a wynik zamiast dwa razy mnożyć przez 10 pomnożyć od razu przez sto.

Zerknij na to

Zostawia tylko jedną kolumnę z przodu i jeśli wynik większy niż dziesięć rysuje jedynkę przed cyframi.

$sim
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 64
$swstack = 16
$framesize = 48
 
Config Lcdpin = Pin , Rs = Porta.2 , E = Porta.3 , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7
Config Lcd = 20x4
Cursor Off Noblink
Cls
 
Gosub Znaki
Gosub Tablica
Cursor Off : Cls
 
Dim Hsingle_2 As Single
Dim Amper As String * 5
 
Dim Convert As Word , Pierwsza As Word , Druga As Word , Trzecia As Word
Dim Linia_g(12) As String * 3 , Linia_d(10) As String * 3
 
  Hsingle_2 = 18.2                                          ' tylko do testow
  Convert = Hsingle_2 * 10                                  'przesuniecie przecinka  w prawo
  Trzecia = Convert Mod 10
   If Trzecia = 0 Then Trzecia = 10
  Pierwsza = Convert / 10
  Druga = Pierwsza Mod 10
   If Druga = 0 Then Druga = 10
  Pierwsza = Pierwsza / 10
 
            Locate 1 , 1
             If Pierwsza > 0 Then Lcd Chr(5) Else Lcd " "   'rysuje pierwsza jedynke
              Lcd Linia_g(druga) ; " " ; Linia_g(trzecia)
            Locate 2 , 1
             If Pierwsza > 0 Then Lcd Chr(5) Else Lcd " "   'rysuje pierwsza jedynke
              Lcd Linia_d(druga) ; Chr(161) ; Linia_d(trzecia)
 
End
'*** KONIEC ***
 
Znaki:
Deflcdchar 1 , 28 , 24 , 32 , 32 , 32 , 32 , 24 , 28        ' prawy naroznik
Deflcdchar 2 , 31 , 31 , 32 , 32 , 32 , 32 , 32 , 32        ' gorna kreseczka
Deflcdchar 3 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 31        ' dolna kreseczka
Deflcdchar 4 , 31 , 31 , 32 , 32 , 32 , 32 , 31 , 31        ' dwie kreseczki
Deflcdchar 5 , 28 , 30 , 30 , 30 , 30 , 30 , 30 , 28        ' prawa belka
Deflcdchar 6 , 7 , 15 , 15 , 15 , 15 , 15 , 15 , 7          ' lewa belka
Deflcdchar 7 , 7 , 3 , 32 , 32 , 32 , 32 , 3 , 7            ' lewy naroznik
Return
 
Tablica:
'=========TABLICA na DUŻE CYFRY===========
'Cyfra 0
Linia_g(10) = Chr(6) + Chr(2) + Chr(5)
Linia_d(10) = Chr(6) + Chr(3) + Chr(5)
'Cyfra 1
Linia_g(1) = "  " + Chr(5)
Linia_d(1) = "  " + Chr(5)
'Cyfra 2
Linia_g(2) = Chr(7) + Chr(4) + Chr(5)
Linia_d(2) = Chr(6) + Chr(3) + Chr(3)
'Cyfra 3
Linia_g(3) = " " + Chr(4) + Chr(5)
Linia_d(3) = " " + Chr(3) + Chr(5)
'Cyfra 4
Linia_g(4) = Chr(6) + Chr(3) + Chr(5)
Linia_d(4) = "  " + Chr(5)
'Cyfra 5
Linia_g(5) = Chr(6) + Chr(4) + Chr(1)
Linia_d(5) = Chr(3) + Chr(3) + Chr(5)
'Cyfra 6
Linia_g(6) = Chr(6) + Chr(4) + Chr(1)
Linia_d(6) = Chr(6) + Chr(3) + Chr(5)
'Cyfra 7
Linia_g(7) = Chr(6) + Chr(2) + Chr(5)
Linia_d(7) = "  " + Chr(5)
'Cyfra 8
Linia_g(8) = Chr(6) + Chr(4) + Chr(5)
Linia_d(8) = Chr(6) + Chr(3) + Chr(5)
'Cyfra 9
Linia_g(9) = Chr(6) + Chr(4) + Chr(5)
Linia_d(9) = Chr(3) + Chr(3) + Chr(5)
Return

Mam tam inny wyświetlacz do testow.

-

BARTek
Moja strona

Portret użytkownika marekszy

prostownik

sprawdziłem i działa tak jak powinno, teraz dopiszę tylko sterowanie mocą w zależności od ustawionego prądu i do testów na akumulatorze, dzięki,jescze pewnie będą pytania ,ale to po testach

Portret użytkownika gosc

prostownik

Projekt godny uwagi, kiedyś szukałem takiego prostownika, ale nie mogłem nic konkretnego znaleźć, a ten projekt jest całkiem ciekawy. Jeśli uda się dokończyć prostownik to czekam na to że pochwalisz sie wykonaniem końcowym. Pozdrawiam

Portret użytkownika demsy1

Prostownik

Witem
Kolego Marekszy udało się dokończyć prostownik?

Portret użytkownika marekszy

Prostownik

Jak na razie miałem problem ze sterowaniem tyrystora, przy obiążeniu żarówkami pracował jak należy, natomiast po podpięciu akumulatora milaczał.Po podaniu napięcia sterującego + z mostka prostownika na "bramkę" zaczął startować (nie przewodził przy sterowaniu z osobnego zasilacza), także znowu powinno coś ruszyć do przodu. Chwilowo trochę brakowało mi czasu (święta ,sylwester itd), ale teraz mam nadzieję pójdzie z górki.
Na pewno niebawem ruszę dalej.

Portret użytkownika gosc

odp

kolego a jakim programem to kompilujesz bo chciał bym pomoc zrobic taki program ale a avr studio krzaczy niesamowicie pozdrawiam

Portret użytkownika marekszy

Prostownik

Wszystko jest kompilowane w Bascomie, jak chcesz się pobawić daję przedostatnie moje kombinacje, trochę jest tam pokomplikowane z pomiarem prądu ponieważ czujnik prądu jest dwukierunkowy i zero dla niego to faktycznie 2,5V i wtedy +/_ 100mV na 1 amper.
w ostatniej wersji mam już automatyczną regulację (trzyma zadany prąd),ale jeszcze do doszlifowania.
Jak coś to pytaj czego nie będziesz wiedział, prawdopodobnie zasilanie sterowania bramki tyrystora powinno być z plusa mostka (tego samego co zasilanie tyrystora).

'*****************prostownikV2 dziala regulacja i pomiar V/A,termometr*********
'prawidlowe wyswietlanie jedynki
$regfile = "m8def.dat"
$crystal = 12000000
$hwstack = 64
$swstack = 64
$framesize = 64
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portc = &B11111100 : Portc = &B11111100
Config Portd = &B11000000 : Portd = &B00111111
 
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.5 , Db7 = Portb.2 , E = Portb.0 , Rs = Portb.1
Config Lcd = 20 * 2
 
Gosub Znaki
Gosub Tablica_2
 
Cursor Off : Cls
 
Config Timer0 = Timer , Prescale = 256
Enable Timer0 : On Timer0 Prztimer0
 
Config Timer1 = Timer , Prescale = 8
Config Int0 = Rising                                        'rising wyzwala zbocze narastające
 
Config Adc = Single , Prescaler = Auto , Reference = Avcc   'Zrodlem odniesienia jest napiecie zasilania
Start Adc                                                   ' tu wlaczamy ADC
 
 
Stop Timer1
On Timer1 Irq_timer1
On Int0 Zero                                                'detekcja przejścia przez 0
Enable Timer1
Enable Int0
Enable Interrupts
 
 
 
Bramka Alias Portd.7
Buzer Alias Portd.6
Wentylator Alias Portc.5
'*********************************************************
Dim Flaga_4ms As Bit , Flaga_100ms As Bit , Flaga_1s As Bit
Dim Dzielnik As Byte , Dzielnik2 As Byte
Dim Moc As Word
Dim Table As Word
Dim Procent As Byte
 
Dim Sw As Byte , Stan_sw As Byte , Licznik_sw As Byte
Dim Poz_menu As Byte
 
'Deklaracja wszystkich zmiennych potrzebnych do pracy programu termostatu
Config 1wire = Portd.3                                      ' konfiguracja portu PD.3 jako wejścia magistrali 1-wire
 
Dim Temp As Word , Hsingle As Word , T1_word As Word
Dim Odczyt(2) As Byte , T As Integer , T1 As Single , Napis As String * 5
Dim Alarm As Byte
 
'deklaracje do pomiaru napiecia
 
Dim P As Byte                                               'licznik dla ilosci pomiarow
Dim Probka As Word                                          'wartosc odczytana z przylozonego do ADC
Dim Napiecie As Word                                        'dodaje do siebie kolejne odczyty
Dim Napiecie_u As Single                                    'napiecie usrednione single bo z przecinkiem
Dim Hsingle_1 As Single                                     'pomocnicza zmienna
Dim Volt As String * 5                                      'zmienna "tekstowa" 5 znakow ksztaltowana przez "fusing"
Dim Napiecie_alarm As Word                                  'wylaczenie po osiagnieciu np.15V
Const P_max = 100                                           'ilosc pomiarow do usredniania
 
'deklaracje do pomiaru pradu
Dim X As Byte                                               'licznik dla ilosci pomiarow
Dim Probka_1 As Word                                        'wartosc odczytana z przylozonego do ADC
Dim Prad As Word                                            'dodaje do siebie kolejne odczyty
Dim Prad_a As Single                                        'napiecie usrednione single bo z przecinkiem
Dim Hsingle_2 As Single                                     'pomocnicza zmienna
Dim Amper As String * 5                                     'zmienna "tekstowa" 5 znakow ksztaltowana przez "fusing"
Const X_max = 100                                           'ilosc pomiarow do usredniania
 
Dim H As Single , H_1 As Single , H_2 As Single
Dim L As Single , L_1 As Single , L_2 As Single
'************************************duze znaki********************************
Dim Convert_2 As Single , Convert_3 As Word
Dim Convert As Word , Pierwsza As Word , Druga As Word , Trzecia As Word
Dim Linia_g(12) As String * 3 , Linia_d(12) As String * 3
 
Dim Convert_1 As Single
Dim I_zadany As Single , I_zadany_1 As Byte , Napis_1 As String * 5 , Napis_0 As String * 5
'******************************************************************************
'wczytanie danych z pamieci
Readeeprom Moc , 6
If Moc > 100 Then Moc = 40
'If Moc < 1 Then Moc = 0
Readeeprom Temp , 8
Readeeprom I_zadany_1 , 4
If I_zadany_1 > 199 Then I_zadany_1 = 15                    ' > 199 Then I_zadany_1 = 199
 
If Temp > 100 Then Temp = 45
'niech DS ma już gotowa temp
 1wreset
 1wwrite &HCC
 1wwrite &H44
'**********************************************************
Lcd "PROSTOWNIK SAM. 12V "
Lowerline
Lcd "   wersja nr.2  "
Wait 2
Cls
'**********************************************************
 
Do
 
If Flaga_4ms = 1 Then                                       'co 4ms
     Flaga_4ms = 0
    'co ma byc co 4ms
     Gosub Przyciski
     Gosub Pomiar_v
     Gosub Pomiar_a
  End If
   If Flaga_100ms = 1 Then                                  ' co 100ms
      Flaga_100ms = 0
     'co ma byc po 100ms
     Gosub Wyswietlanie
     Gosub Sterowanie
   End If
    If Flaga_1s = 1 Then                                    'co 1s
       Flaga_1s = 0
       'co ma byc co 1s
      Gosub Temperatura
      Gosub Napiecie_1
      Gosub Prad_1
      'Gosub Sterowanie
    End If
 
Loop
End
'***********************Przerwanie timer0**************************************
Prztimer0:
 Timer0 = 70
 Flaga_4ms = 1
 Incr Dzielnik
 If Dzielnik = 25 Then                                      '25*4ms = 100ms
   Dzielnik = 0
   Flaga_100ms = 1
   Incr Dzielnik2
   If Dzielnik2 = 10 Then                                   '10*100ms=1s'
    Dzielnik2 = 0
    Flaga_1s = 1
   End If
 End If
Return
'**********************sterowanie tyrystorem***********************************
 
Irq_timer1:
 Bramka = 0
 Stop Timer1
Return
 
Zero:
 Bramka = 1
 Table = Lookup(moc , Tablica)
 Load Timer1 , Table
 
 Start Timer1
Return
 
'************************podprogram pom.temperatury****************************
 
Temperatura:
 
  1wreset                                                   ' tu czytasz temperature
  1wwrite &HCC
  1wwrite &HBE
   Odczyt(1) = 1wread(2)
   T = Odczyt(2)
  Shift T , Left , 8
   T = T + Odczyt(1)
   T1 = T * 0.0625
   T1_word = T1
 
 
  If Poz_menu <> 5 Then                                     ' wyswietla co 1sec chyba że ustawiasz temp
    Napis = Fusing(t1 , "#.#")
   ' Locate 2 , 13
   'Lcd "T:" ; Napis ; "" ; Chr(223) ;                       'wyświetl wynik ze zmiennej Word temperatura
  End If
 
 1wreset                                                    ' tu kazesz DS`owi przygotować nowy odczyt
 If Err = 0 Then
  1wwrite &HCC                                              ' i za sekunde juz będzie gotowy
  1wwrite &H44
  Alarm = 0
  Else
  Alarm = 1
 End If
Return
 
'******************************konw.napiecia***********************************
Napiecie_1:
Hsingle_1 = Napiecie_u * 0.0049
  Hsingle_1 = Hsingle_1 * 6
  Volt = Fusing(hsingle_1 , "#.&")
Return
 
'******************************konw.pradu**************************************
Prad_1:
  Hsingle_2 = Prad_a * 0.0049
  Convert = Hsingle_2 * 100
  Convert_3 = Convert - 250
  Convert_1 = Hsingle_2 * 10
  I_zadany = I_zadany_1 / 10                                'prad zadany(ustawiany)
  Convert_2 = Convert_1 - 25
  Napis_1 = Fusing(i_zadany , "#.#")
  Napis_0 = Fusing(convert_2 , "#.#")
 
  H = Convert_2 * 10
  H_1 = H + 2
  H_2 = H_1 / 10
  L = Convert_2 * 10
  L_1 = L - 2
  L_2 = L_1 / 10
 
  Trzecia = Convert_3 Mod 10
   If Trzecia = 0 Then Trzecia = 10
  Pierwsza = Convert_3 / 10
  Druga = Pierwsza Mod 10
   If Druga = 0 Then Druga = 10
  Pierwsza = Pierwsza / 10
 
Return
 
'**********************************pomiar V************************************
Pomiar_v:
 
Incr P                                                      'zwiekszanie licznika dla pomiarow
 Probka = Getadc(0)                                         'zmierz na Pinie 0 ADC
 Napiecie = Napiecie + Probka                               'dodaj kolejne pomiary
  If P >= P_max Then                                        'gdy pomiarow 20
      P = 0
    Napiecie_u = Napiecie / P_max                           'podziel cala sume przez ilosc pomiarow (usrednij)
    Napiecie = 0                                            'zeruj zmienna by dodawac nowe
  End If
 
Napiecie_alarm = Hsingle_1 * 10
If Napiecie_alarm > 151 Then                                '151 dla 15,1V
  Buzer = 1
  'Moc = 10                                                  'ograniczyc do 15V
  Else
  'Readeeprom Moc , 6
  Buzer = 0
End If
Return
''***********************************pomiar A**********************************
Pomiar_a:
 
Incr X                                                      'zwiekszanie licznika dla pomiarow
 Probka_1 = Getadc(1)                                       'zmierz na Pinie 0 ADC
 Prad = Prad + Probka_1                                     'dodaj kolejne pomiary
  If X >= X_max Then                                        'gdy pomiarow 20
      X = 0
    Prad_a = Prad / X_max                                   'podziel cala sume przez ilosc pomiarow (usrednij)
    Prad = 0                                                'zeruj zmienna by dodawac nowe
  End If
 
Return
'**********************************wyswietlanie********************************
Wyswietlanie:
Select Case Poz_menu
 
 Case 0:
 
   Locate 1 , 1
     If Pierwsza > 0 Then Lcd Chr(5) Else Lcd " "           'rysuje pierwsza jedynke
     Lcd Linia_g(druga) ; " " ; Linia_g(trzecia) ; Linia_g(11)
   Locate 2 , 1
     If Pierwsza > 0 Then Lcd Chr(5) Else Lcd " "           'rysuje pierwsza jedynke
     Lcd Linia_d(druga) ; Chr(161) ; Linia_d(trzecia) ; Linia_d(11)
   Locate 1 , 14 : Lcd " U:" ; Volt ; "V      "
   Locate 2 , 15 : Lcd "I:" ; Procent ; "%  "
   Procent = Moc * 1                                        '20 kroków skok co 5%
  'Locate 2 , 13 : Lcd "T:" ; Napis ; "" ; Chr(223) ; "C"
 
 Case 1:
  Locate 1 , 1
  Lcd "Moc:> " ; Procent ; "% mocy                "
  Procent = Moc * 1
  Locate 2 , 1 : Lcd "                     "
 Case 2:
  Locate 1 , 1
  Lcd "Temp:> " ; Temp ; "" ; Chr(223) ; "C" ; "            "
  Locate 2 , 1 : Lcd "                     "
 
 Case 3:
  Locate 1 , 1 : Lcd "PRAD ZADANY:"                         '; I_zadany
  Locate 2 , 1 : Lcd "I:" ; Napis_1 ; "        "
End Select
Return
'************************************przyciski*********************************
Przyciski:
Sw = Pind And &B00110011                                    'maskowanie nieużywanych pinów
 
If Sw <> &B00110011 And Stan_sw = Sw Then
    Incr Licznik_sw
    If Licznik_sw = 100 Then
      Licznik_sw = 0
      Select Case Stan_sw
 
 
        Case &B00010011:                                    'SW_1 poz menu(4 pozycje 0/1/2/3) portD.5
           Incr Poz_menu
           If Poz_menu = 4 Then
             Poz_menu = 0
             Writeeeprom Temp , 8
             Writeeeprom Moc , 6
             Writeeeprom I_zadany_1 , 4
           End If
 
        Case &B00110010                                     'SW_2  (+) portD.0
          Select Case Poz_menu
            Case 1:
              If Moc < 100 Then Incr Moc
              If Moc > 100 Then Moc = 100
            Case 2:
              If Temp < 100 Then Incr Temp                  '
            Case 3:
              If I_zadany_1 < 199 Then Incr I_zadany_1
              'If I_zadany_1 > 199 Then I_zadany_1 = 199
          End Select
 
        Case &B00110001                                     'SW_4  (-) portD.1
          Select Case Poz_menu
            Case 1:
              If Moc > 0 Then Decr Moc
              If Moc < 0 Then Moc = 0
            Case 2:
              If Temp > 0 Then Decr Temp
            Case 3:
              If I_zadany_1 > 0 Then Decr I_zadany_1
              'If I_zadany_1 < 0 Then I_zadany_1 = 0
         End Select
      End Select
    End If
  Else
    Stan_sw = Sw
    Licznik_sw = 80
  End If
Return
 
'****************************tabela do reg.fazowej*****************************
Tablica:
Data 14043%
Data 13645% , 13645% , 13338% , 13077% , 12847% , 12637% , 12443% , 12262% , 12090% , 11928%       '14043%
Data 11772% , 11622% , 11478% , 11338% , 11202% , 11070% , 10942% , 10816% , 10693% , 10572%
Data 10454% , 10338% , 10224% , 10111% , 10000% , 9890% , 9782% , 9675% , 9570% , 9465%
Data 9361% , 9258% , 9156% , 9055% , 8955% , 8855% , 8756% , 8657% , 8559% , 8461%
Data 8364% , 8267% , 8171% , 8074% , 7978% , 7882% , 7787% , 7691% , 7596% , 7500%
Data 7405% , 7309% , 7213% , 7118% , 7022% , 6926% , 6829% , 6733% , 6636% , 6539%
Data 6441% , 6343% , 6244% , 6145% , 6045% , 5945% , 5844% , 5742% , 5639% , 5535%
Data 5430% , 5325% , 5218% , 5110% , 5000% , 4889% , 4776% , 4662% , 4546% , 4428%
Data 4307% , 4184% , 4058% , 3930% , 3798% , 3662% , 3522% , 3378% , 3228% , 3072%
Data 2910% , 2738% , 2557% , 2363% , 2153% , 1923% , 1662% , 1355% , 957%
 
'Data 5200%
'Data 5000% , 4800% , 4600% , 4400% , 4300% , 4200% , 4100% , 4000% , 3800% , 3600%
'Data 3400% , 3200% , 2900% , 2600% , 2200% , 1900% , 1500% , 1000% , 500% , 10 %
Return
'******************************************************************************
Znaki:
Deflcdchar 1 , 28 , 24 , 32 , 32 , 32 , 32 , 24 , 28        ' prawy naroznik
Deflcdchar 2 , 31 , 31 , 32 , 32 , 32 , 32 , 32 , 32        ' gorna kreseczka
Deflcdchar 3 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 31        ' dolna kreseczka
Deflcdchar 4 , 31 , 31 , 32 , 32 , 32 , 32 , 31 , 31        ' dwie kreseczki
Deflcdchar 5 , 28 , 30 , 30 , 30 , 30 , 30 , 30 , 28        ' prawa belka
Deflcdchar 6 , 7 , 15 , 15 , 15 , 15 , 15 , 15 , 7          ' lewa belka
Deflcdchar 7 , 7 , 3 , 32 , 32 , 32 , 32 , 3 , 7            ' lewy naroznik
Return
 
Tablica_2:
'=========TABLICA na DUŻE CYFRY===========
'Cyfra 0
Linia_g(10) = Chr(6) + Chr(2) + Chr(5)
Linia_d(10) = Chr(6) + Chr(3) + Chr(5)
'Cyfra 1
Linia_g(1) = " " + Chr(5) + " "
Linia_d(1) = " " + Chr(5) + " "
'Cyfra 2
Linia_g(2) = Chr(7) + Chr(4) + Chr(5)
Linia_d(2) = Chr(6) + Chr(3) + Chr(3)
'Cyfra 3
Linia_g(3) = "" + Chr(4) + Chr(5)
Linia_d(3) = "" + Chr(3) + Chr(5)
'Cyfra 4
Linia_g(4) = Chr(6) + Chr(3) + Chr(5)
Linia_d(4) = "  " + Chr(5)
'Cyfra 5
Linia_g(5) = Chr(6) + Chr(4) + Chr(1)
Linia_d(5) = Chr(3) + Chr(3) + Chr(5)
'Cyfra 6
Linia_g(6) = Chr(6) + Chr(4) + Chr(1)
Linia_d(6) = Chr(6) + Chr(3) + Chr(5)
'Cyfra 7
Linia_g(7) = Chr(6) + Chr(2) + Chr(5)
Linia_d(7) = "  " + Chr(5)
'Cyfra 8
Linia_g(8) = Chr(6) + Chr(4) + Chr(5)
Linia_d(8) = Chr(6) + Chr(3) + Chr(5)
'Cyfra 9
Linia_g(9) = Chr(6) + Chr(4) + Chr(5)
Linia_d(9) = Chr(3) + Chr(3) + Chr(5)
'Litera A
Linia_g(11) = Chr(6) + Chr(4) + Chr(5) + "  "
Linia_d(11) = Chr(255) + " " + Chr(255) + "  "
Return
Sterowanie:
 If Moc <= 0 Then Moc = 1
 If Moc >= 100 Then Moc = 99
 If I_zadany > H_2 Then Incr Moc                            'Convert_2
 If I_zadany < L_2 Then Decr Moc                            'Convert_2
Return

Ja do tego przysiądę nie wcześniej jak za 2 tygodnie

Portret użytkownika gosc

Gość

Kolega chce pomóc ,,zrobić taki program,, jak nawet nie wie w jakim języku jest napisany. Dobre....he he
Dziękuję za taką pomoc

Portret użytkownika mirley

Re: Bascom

W pierwszej linii dwa posty wyżej napisane jest że program należy skompilować w Bascomie, a dokładnie BASCOM AVR.... Jesli chcesz skompilowac to w innym srodowisku, możesz użyć kompilatora bascoma z konsoli. Może uda się to podłączyć do avr studio jako zewnętrzny kompilator

-

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 gosc

Prostownik

I działa wszystko bo byłbym zainteresowany zrobieniem takiego cuda.

Portret użytkownika gosc

Kompilacja.

Witam doświadczonych kolegów. Długo szukałem inteligentnego prostownika do ładowania akumulatorów aż w końcu natrafiłem na ten temat. Nie ukrywam, że przygodę z programowaniem zacząłem niedawno i i jak na razie to jestem bardziej pasożytem niż programistą. Ale skompilować "cudzy" program potrafię tylko z Twoim Marekszy nijak nie mogę sobie poradzić. Ciągle wywala mi ostatnią linię "return". Jeżeli to nie sprawi Ci kłopotu to proszę o pomoc, bo konstrukcja jest bardzo ciekawa a co najgorsze zrobiłem już PCB ,wlutowałem elementy i wypada mi ją teraz wyrzucić. Z góry dziękuję za pomoc.

Portret użytkownika EDC

Odp. Kompilacja

Proszę Pod tym linkiem znajdziesz skompilowany oryginalny program Marka z tej strony. Poprawiłem w nim tylko drobny błąd w tablicy i się skompilował.
Przyjrzałem się tez programowi i w drugim folderze znajdziesz program trochę przeze mnie "zoptymalizowany" Nie testowałem go jednak bo nie mam na czym

Znaki zapisałem w inny sposób a obsłudze przerwań kazałem sie przyjrzeć mojemu programikowi NoSave Tool. Pozwala on na efektywniejsze zarządzanie odkładaniem i ściąganiem rejestrów ze stosu.

Po tych i kilku innych zabiegach program powinien być żwawszy bo z 88% schudł do 77%

-

BARTek
Moja strona

Portret użytkownika gosc

Prośba

witam
Maże ktoś wstawić wzór płytki
thx z góry

Portret użytkownika marekszy

Prostownik

Na razie proszę nie szalejcie z budową, jak wcześniej pisałem jest to wersja jeszcze niedopracowana, w trakcie wstępnych testów (no chyba ,że macie chęć się pobawić i dokończyć to co tutaj mam,a nie tylko zbudować ,a później zamęczać mnie pytaniami i poganiać).
Będę to powoli kończył ,ale na spokojnie, mieszkam w bloku i niestety nie będę non stop latał z akumulatorem na 2 piętro, a tym bardziej nie postawię go w kuchni na blacie(żona by się chyba rozwiodła) gdzie wygospodarowałem sobie stanowisko do testów uruchamianej elektroniki.
Ja projektuję sobie płytki pod konkretną obudowę także i tak byś miał problem z dopasowaniem.

Portret użytkownika gosc

Warren

Panie marekszy trzeba ryzykować niewielka strata a człowiek sie coś nauczy :)
Korzystając z profesjonalnych algorytmów ładowania akumulatora np Sb/Ca standard 50Ah
ustawiony prąd powinien zadawany do ok 14V /wchodzimy w fazę absorpcji aż osiągniemy 14.4-14.5V a prąd jednocześnie powinien zjeżdżać w dół po krzywej / aż do prądu konserwacji ~ 150mA
wg źródła http://www.batterytender.com/Battery-Basics/#answer3 ew mogę podać wykresy gotowe jakby była potrzeba
Dla różnych typów akumulatorów mamy różne napięcia maks jak i prąd miejsce w procku jeszcze jest -to tak na przyszłośc bo podstawowa wersja już jest OK
napięcie alarmu 15.1 V to zdecydowanie za wysoko 14.8/ i mysłe już tu o zwłoce i uśrednianiu/ to już jest źle - gotowanie mamy zapewnione a czasami wody się nie da dolać
Żona co by byśmy bez nich zrobili :D osobiście do analogowych prostowników używam mniejszego trafa i akumulatorów do 10Ah nawet żelówek

Portret użytkownika marekszy

prostownik

Dzięki za pomocne informacje, jednak teoria teorią ,a praktyka swoje. Prostowniki do ładowania które wykonujemy nie są do akumulatorów nowych (wzorcowych), a do lekko przelatanych, przy testach mojego 3 letniego 75Ah napięcie na nim kiedy zakończyłem ładowanie( uważałem ,że już mu wystarczy) wynosiło 15,3V i gazowanie było niewidoczne (akumulator jeszcze w pełni sprawny) ,także 15,1V uznałem za max. Nie chodzi mi o ładownie które będzie trwało nie wiem ile czasu (zgodne ze sztuką), ale o praktyczne doładowanie. Poczytałem trochę na różnych forach i moje rozumowanie nie różni się od poglądów innych forumowiczów.
Dziękuję za wszelkie sugestie i chętnie posłucham wszelkich pomocnych informacji, wiedzy nigdy za dużo i
cieszy mnie każda pomoc.

Portret użytkownika matrix

Re: prostownik

No to w czym dodać funkcję WYBÓR AKUMULATORA-> NOWY -> STARY ?
A w stałej dajesz dwa napięcia do jakich ma się ładować akumulator i tyle...

Portret użytkownika gosc

prostownik

stare wersje algorytmów prostsze
http://jgdarden.com/batteryfaq/carfaq9.htm#algorithms
nowsze
http://markoweakumulatory.pl/cyba/produkty/ctek/ctek_MXS_10_instrukcja_pl.pdf
nawet w trakcyjnych max napięcie to 10% więcej plus formowanie 120% prądu na początku.a później normalnie
dopóki jest kod otwarty zmiana wartości granicznej napięcia nie stanowi problemu ? jedna linijka kodu? jak myślę
Ja dla sprawnego aku nie przekraczam 14.4 14.8V dla dychajacych; przy czym częśc "inteligentnych" prostowników kończy przy tej wartości dla zasady ; przez 3 lata pracowałem na baterii akumulatorów przemysłowej 230 plus 10 meleksów -praktyka
zresztą poziom naładowania nie każdy zmierzy gęstość elektrolitu napięcia na cele i jeszcze obciąży prądem
problem że mamy autor zapisał 90% pamięci to nie atmega 16/32
Panie marekszy może zamiast buzzera dać przekaźnik odcinający napięcie ??? słuch i zwłąszcza ludzka pamięć to zawodne elementy- dla małych prądów wystarczy zmostkować przekaźnik np relpola R4 ok 12A wytrzymuje przynajmniej rok a dla większych miniaturowe /dobre są takie po 1994r jeszcze w technologio nie do zdarcia/ styczniki plus gasiki

Portret użytkownika marekszy

prostownik

Nie ma żadnego problemu dopisać parę linijek do zmiany napięcia wyłączania, a raczej do przejścia w tryb "konserwacji" i cykać go delikatnie małym prądem.
Z miejscem w procesorze to też nie tragedia, można przesiąść się na ATMEGĘ 168, nawet nie zmieniamy pinologi i schematu.
Z brakiem czasu na razie sobie nie mogę poradzić, ale jak to się mówi "przyjdzie czas będzie radość"

Portret użytkownika gosc

Prostownik

Witam. W jakiej cenie byłaby płytka + uC ?

Portret użytkownika gosc

Prostownik

Witam,czy ktos posiada wzór pcb,coś sie ruszylo ze softem,jest w miare stabilny?

Portret użytkownika marekszy

Prostownik

Wzorów PCB nie ma i nie będzie, jest to kwestia indywidualna w zależności od obudowy.
Z softem niebawem powinienem ruszyć dalej.

Portret użytkownika gosc

Mi również podoba się

Mi również podoba się prostownik ktory jest inny niż wszystkich i czekam na finish

Portret użytkownika gosc

Ciekawa konstrukcja

WITAM
Po osiągnięciu przez aku. 14,4V większość prostowników przerywa proces ładowania i przechodzi w stan monitorowania napięcia (bez znaczenia czy nowy czy stary akumulator). Napięcie aku musi być mierzone w przerwach pomiędzy ładowaniem aku ( na samym aku). Czy zastanawiałeś się nad wykorzystaniem PWM-a i mosfeta zamiast tyrystora?

Schemat samego sterowania Mosfetem przez PWM mogę Ci podesłać (sprawdzony i działający).

Portret użytkownika marekszy

Prostownik

tak ,zastanawiałem się ,ale jakoś nie przemówiło to do mnie, podeślij na to zobaczymy.

Portret użytkownika gosc

kisoft sterowanie MOSFETEM

Podesłałem
mosfet z kanałem typu P, oczywiście możesz dać z kanałem typu N ale wtedy musisz zamienić D z S i obciążenie wpiąć od strony plusa. Mosfet musi mieć R (D,S) poniżej 20 mili omów , mogą być dwa równolegle każdy ze swoim opornikiem w bramce 47om ( nawet wskazane jest dać dwa przy 20A LEDWO CIEPŁE)

Pozdrowienia od kolegi Kisoft.

P.S
Nie wiem jak tu wkleić obrazek.

Portret użytkownika marekszy

sterowanie MOSFETEM

Wstawiłem obrazek kolegi

Portret użytkownika gosc

sterowanie mosfetem Kisoft

Odnośnie tego rysunku to t1 i t4 można dać mocniejsze, odpowiednio BC337 i BC327 (zwłaszcza gdy chcemy dać więcej niż jednego mosfeta). Układ nie jest mój, znalazłem podobne w necie ale działa na 100%.

Portret użytkownika Grzeniu 73

A nie taniej i łatwiej

A nie taniej i łatwiej wyjdzie kupić jakiś driver do mosfeta?

Portret użytkownika gosc

Prostownik

Witam i jak idą prace nad wsadem do procka.

Portret użytkownika gosc

prostownik

Portret użytkownika gosc

Pomoc

Witam a można by było wrzucić to na elektrodę to może by coś pomogli.

Portret użytkownika gosc

Elerktroda

Witam to wrzucamy to na ELEKTRODE chyba ze wsad dokończony .Ale ja sam to nie wrzucę bo potrzebna zgoda pomysłodawcy.

Portret użytkownika marekszy

Elerktroda

Wstrzymaj jeszcze konie, właśnie kończę montować od nowa prostownik, po przerwie majowej wrzucę poprawiony schemat i może trochę zmieniony kod.
Zmieniłem ACS712 na ACS713 orz trzeba zmienić w tablicy parametry ,aby regulacja odbywała się w granicach 70%-100%.
Później możesz robić co chcesz, ale przygotuj się na bzdurne pytania i odpowiedzi z ELEKTRODY, a pomoc będzie znikoma (łatwiej ludziom tworzyć coś od nowa niż kombinować w starym kodzie).

Portret użytkownika gosc

Prostownik

Witam i zmontowany prostownik proszę o nowy schemat i wsad.

Portret użytkownika gosc

Prostownik

I jak idą prace nad prostownikiem.
Kiedy opublikujesz nowy schemat i wsad.

Portret użytkownika gosc

Prostownik

Witam moze ktos stworzyc do tego prostownika plytke PCB?

Portret użytkownika matrix

Re: Prostownik

A ja mam pytanie. Gdyby zamiast tyrystora zapodał w obwód masy mosfeta na przykład IRLZ44N i sterował nim za pomocą PWM ?

Portret użytkownika gosc

Prostownik PCB

Ponawiam prosbe o stworzenie plytki PCB do tego prostownika.

Portret użytkownika marekszy

Prostownik PCB

jeszcze nie, cały czs testuję i zmieniam.

Portret użytkownika gosc

Tu jest trochę opisane o

Tu jest trochę opisane o prostowniku tyrystorowym http://forum.atnel.pl/topic15845.html

Portret użytkownika gosc

Prostownik

Portret użytkownika gosc

Prostownik

No witam .
Mam pytanie czy coś ruszyło dalej.