eCigTalk.org - Powered by vBulletin



Показано с 1 по 20 из 2250

Тема: Стабилизатор напряжения

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Пользователь
    Репутация: 34
    Регистрация: 11.09.2010
    Пол:
    Адрес: Москва
    Сообщений: 449

    'takter-nur-finger.bas
    'raidy 07.06.2010
    'v1.2
    'CKS 1ACB9F
    'Copyright: jede gewerbliche und/oder Gewinnbringende Verwendung untersagt. Alle Rechte vorbehalten by raidy
    'Status: testet, o.k.



    $regfile = "attiny25.dat" 'wir haben einen ATTiny45 eingelötet, der Compiler muss das wissen
    $crystal = 1000000 'läuft mit 1MHz und braucht nur 400uA
    '$framesize = 32 'Stackanweisungen, die eigentlich nur bei größeren Programmen
    '$swstack = 32 'wirklich nötig werden
    '$hwstack = 32
    '$prog &HFF , &H62 , &HDF , &HFF ' generated. Take care that the chip supports all fuse bytes.

    ' Jetzt gehts los

    Config Portb = Output 'prinzipiell sind alle Ports erst mal ein Ausgang
    Config Pinb.3 = Input 'ADC3
    Config Pinb.4 = Input 'ADC2
    Config Pinb.5 = Input 'ADC0
    Config Pinb.2 = Input 'adc1

    'Konfigurieren und starten des Analogwandlers, welcher den fsr und Fingersesor auswertet..
    Config Adc = Single , Prescaler = Auto , Reference = Avcc


    Declare Sub Dampfen 'Dampffunktion
    Declare Sub Staerker 'staerker
    Declare Sub Schwaecher 'schwaecher
    Declare Sub Led 'led
    Declare Sub Spannung 'spannungskontrolle
    Declare Sub Akku_alarm 'akku zu leer!
    Declare Sub Sensor_limit_ueberschritten 'Finger zu lange am Sensor oder nass geworden = Schutzabschaltung


    Dim Anprozent As Word
    Dim Ausprozent As Word
    Dim F_an As Word
    Dim F_aus As Word
    Dim F_plus As Word
    Dim F_minus As Word
    Dim D_staerke As Word
    Dim D_maxan As Word
    Dim Ruhe As Word
    Dim Led_dauer As Word
    Dim Led_pulse As Word
    Dim D_spannung As Word
    Dim Spannungs_faktor As Word
    Dim Maxdampfzeit As Word
    Dim Akkumin As Word
    Dim Akkuvoll As Word
    Dim X As Word

    Akkumin = 680 ' adc-werte des Spannungsteilers <> 3,3Volt
    Akkuvoll = 840 '<>4,2V
    Spannungs_faktor = 1.0
    Ruhe = 200

    Aus Alias 0 'einfacher zu verstehen.
    An Alias 1
    D_fet Alias Portb.0 'das ist der Taktausgang
    D_led Alias Portb.1 'Ausgang des LED
    Start Adc
    'main Schleife

    'Standardwerte setzen
    D_staerke = 80 '80% Dampf

    'Erst Mal Alles Ausschalten
    D_led = 1
    D_fet = 0
    Do ' die ewige Schleife
    Maxdampfzeit = 0 'rücksetzen der Maxdampfsperre
    F_an = Getadc(2) 'der Fingersensor Dampfen
    Waitms 20 'der Fingersensor stärker
    F_plus = Getadc(0)
    Waitms 20
    F_minus = Getadc(3) 'der Fingersensor schwächer
    Waitms 20
    D_spannung = Getadc(1) 'Messen der Akkuspannung
    Waitms 20
    If D_spannung < Akkuvoll Then Gosub Spannung ' akku muss genauer geprüft werden, da nicht mehr 4,2V und PWM-Korrekturfaktor neu berechnen
    If F_an > Ruhe Then Gosub Dampfen
    If F_plus > Ruhe Then Gosub Staerker
    If F_minus > Ruhe Then Gosub Schwaecher

    Loop ' Ende der ewigen Aussenschleife

    Sub Dampfen
    Anprozent = D_staerke * Spannungs_faktor 'hat sich die Spannung verringert, dann wird genau um diesen Prozentsatz die Dampfphase verlängert.
    If Anprozent > 100 Then Anprozent = 100 'aber halt auch nicht mehr wie 100% an
    Ausprozent = 100 - Anprozent 'so jetzt wissen wir, was wir wollen
    Do

    F_an = Getadc(2)
    If F_an < Ruhe Then Exit Do 'kein Druck mehr auf Sensor
    D_fet = An
    If Maxdampfzeit > 100 Then Gosub Sensor_limit_ueberschritten
    Incr Maxdampfzeit
    Waitms Anprozent
    D_fet = Aus
    Waitms Ausprozent

    Loop
    Return
    End Sub

    Sub Staerker

    Do
    ' Die ewige Aussenschleife
    F_plus = Getadc(0)
    If F_plus < Ruhe Then Exit Do ' finger ist wieder weg
    If D_staerke < 100 Then D_staerke = D_staerke + 5
    Led_dauer = 50
    Led_pulse = 5
    Gosub Led
    Loop
    Return
    End Sub

    Sub Schwaecher

    Do
    ' Die ewige Aussenschleife
    F_minus = Getadc(3)
    If F_minus < Ruhe Then Exit Do ' finger ist wieder weg
    If D_staerke > 5 Then D_staerke = D_staerke - 5
    Led_dauer = 100
    Led_pulse = 5
    Gosub Led
    Loop
    Return
    End Sub


    Sub Led
    For X = 1 To Led_pulse
    D_led = 0
    Waitms Led_dauer
    D_led = 1
    Waitms Led_dauer
    Next X
    If D_staerke > 95 Then
    D_led = 0
    Waitms 1000
    D_led = 1
    End If

    If D_staerke <= 5 Then
    D_led = 0
    Waitms 1000
    D_led = 1
    End If



    Return
    End Sub


    Sub Spannung
    ' hier könnte auch folgende Formel stehen
    ' Spannungs_faktor = 840 / Akkumin ' Erhöhen des Spannungs_faktor (Taktzeitkorrektur) um nachgelassene Batterie in %
    ' Spannungs_faktor = Spannungs_faktor * Spannungs_faktor 'und ins Quadrat nehmen, denn, den 1/2 Spannung=1/4 Leistung
    ' Ich habs praktisch probiert und untere Wete für gut empfunden.

    Select Case D_spannung
    Case 800 To 840 : Spannungs_faktor = 1
    Case 780 To 799 : Spannungs_faktor = 1.1
    Case 760 To 779 : Spannungs_faktor = 1.2
    Case 740 To 759 : Spannungs_faktor = 1.4
    Case 720 To 739 : Spannungs_faktor = 1.5
    Case 700 To 719 : Spannungs_faktor = 1.6
    Case 681 To 699 : Spannungs_faktor = 1.8
    Case 0 To Akkumin : Gosub Akku_alarm

    End Select
    Return
    End Sub

    Sub Akku_alarm

    For X = 1 To 5 ' Alarm, dann neu prüfen. Könnte ja schon im Ladegerät stehen
    Led_pulse = 10
    Led_dauer = 20
    Gosub Led
    Waitms 200
    Next X

    End Sub


    Sub Sensor_limit_ueberschritten
    Do
    D_fet = Aus
    Led_pulse = 10
    Led_dauer = 100
    Gosub Led
    F_an = Getadc(2)
    If F_an < Ruhe Then Exit Sub
    Loop
    Return

    End Sub
    Стабилизатор напряжения Изображения
    Последний раз редактировалось slimest; 19.05.2011 в 01:37.
    ecigroom.myqip.ru

Похожие темы

  1. Эни-волт "стабилизатор"
    от Alico в разделе Техническая часть
    Ответов: 83
    Последнее сообщение: 25.10.2011, 21:03

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  

Условия предоставления информации | Отказ от ответственности

© eCigTalk.org 2021