Tiny13 Touch-Slider


Elektronik-Labor  AVR  Projekte   Touch


 

Der am Mega32 entwickelte Touch-Slider benötigt nur vier Ports und einen PWM-Ausgang. Die Anwendung sollte also auch auf einem sehr viel kleinen Controller mit nur acht Beinchen laufen. Ein Test mit dem Tiny13 zeigt: Das Programm passt mit 95% gerade noch ins Flash. Gegenüber dem ES-M32 entfällt die Ansteuerung des LED. Außerdem muss beachtet werden, dass der PWM-Ausgang mit einer Auflösung von 8 Bit arbeitet.



'Tiny13, Touch 4, Slider mit Mittelwertbildung
$regfile = "attiny13.dat"
$crystal = 4800000
$hwstack = 8
$swstack = 2
$framesize = 4

Dim T1 As Integer
Dim T2 As Integer
Dim T10 As Integer
Dim T20 As Integer
Dim T11 As Integer
Dim T21 As Integer
Dim T3 As Integer
Dim T4 As Integer
Dim U1 As Integer
Dim U2 As Integer
Dim Pwm1 As Integer
Dim Mittel(20) As Byte
Dim Zeiger As Byte
Dim N As Byte
Dim I As Byte

Config Timer0 = Pwm , Prescale = 8 , Compare A Pwm = Clear Down
Start Timer0

Declare Sub Touch1
Declare Sub Touch2

Ddrb = 255
Portb = 0

Touch1
Touch2
T10 = T1
T20 = T2

Do
Touch1
Touch2
T11 = T10 - T1
T21 = T20 - T2
T3 = T11 + T21
If T3 < 5 Then
T10 = T1
T20 = T2
Zeiger = 1
End If

If T3 > 10 Then
T4 = T21 * 120
T4 = T4 / T3
T4 = T4 - 10
If T4 < 5 Then T4 = 0
If T4 > 100 Then T4 = 100
Mittel(zeiger) = T4
If N > 0 Then
T4 = 0
For I = 1 To N
T4 = T4 + Mittel(i)
Next N
T4 = T4 / N
End If
Zeiger = Zeiger + 1
If Zeiger > 20 Then Zeiger = 1
N = N + 1
If N > 20 Then N = 20
Pwm1 = T4 * T4
Pwm1 = Pwm1 / 40 '0...250
Pwm0a = Pwm1
Waitms 20
Else
Waitms 100
End If

Loop


'Anpassung: B1/2, B3/4

Sub Touch1
For T1 = 1 To 500
Ddrb.1 = 0 'C1 hochohmig
Portb.2 = 1 'C2 high
Ddrb.2 = 1 'C2 niederohmig
If Pinb.1 = 0 Then Exit For 'C1 low?
Ddrb.2 = 0 'C2 hochohmig
Portb.2 = 0 'ohne Pullup
Ddrb.1 = 1
Next T1 'C1 low
Portb.1 = 0
Portb.2 = 0
Ddrb.1 = 1
Ddrb.2 = 1
End Sub


Sub Touch2
For T2 = 1 To 500
Ddrb.3 = 0 'C3 hochohmig
Portb.4 = 1 'C4 high
Ddrb.4 = 1 'C4 niederohmig
If Pinb.3 = 0 Then Exit For 'C3 low?
Ddrb.4 = 0 'C4 hochohmig
Portb.4 = 0 'ohne Pullup
Ddrb.3 = 1
Next T2 'C3 low
Portb.3 = 0
Portb.4 = 0
Ddrb.3 = 1
Ddrb.4 = 1
End Sub

End
Download: Quelltext und Hexfile


http://www.youtube.com/watch?v=8WHvyhY4VOo

1.12.10: Дмитрий Л. (gottdrak99) hat das Programm in C umgeschrieben und im Mikrocontroller-Net vorgerstellt: http://www.mikrocontroller.net/topic/199362


Platinenversion und SMD

Der Tiny13-Touch-Slider wird jetzt von der Firma Modul-Bus in einer Platinen-Version hergestellt. Heute habe ich Muster der Paltine bekommen und konnte alles testen. Mit auf der Platine befinden sich ein 5-V-Spannungsregler und ein Power-FET IRF7413 für eine Belastung mit mehreren Ampere.

Auf der Rückseite ist die Platine glatt Man kann sie in eine Frontplatte einsetzen oder hinter eine Holzplatte montieren. Das System funktioniert durch isolierende Platten bis ca. 8 mm Dicke hindurch.



Wenn mal kein Tiny13 im SO-Gehäuse vorhanden ist, kann alternativ auch einer im DIP-Gehäuse bestückt werden. Das war mein besonderer Wunsch. wenn man nämlich eine Spezialversion der Firmware testen möchte, kann hier auch ein IC-Sockel montiert werden.



Wenn mal kein Tiny13 im SO-Gehäuse verwendet werden soll, kann alternativ auch einer im DIP-Gehäuse bestückt werden. Das war mein besonderer Wunsch. Wenn man nämlich eine Spezialversion der Firmware testen möchte, kann hier auch ein IC-Sockel montiert werden. Jedenfalls so lange, bis alles fertig entwickelt ist.


Elektronik-Labor  AVR  Projekte   Touch