VID28 PCB - TorstenC/Notizblog GitHub Wiki
Ziel
Eine preiswerte Platine, um einen VID28 Doppel-Schrittmotor (Zeiger-Modul) als Sensor und/oder Aktor zu benutzen.
Nachtrag: Besser Layout, bei dem zwei gleiche PCBs für einen Doppel-Schrittmotor verbunden werden und damit für Zeiger-Module mit einer Achse nur ein einzelnes PCB genutzt wird.
- Sensor:
Drehwinkel und Dreggeschwindigkeit ermitteln - Aktor:
Siehe auch Thread: Uhr wie im Ham Yard Hotel in London - Sensor und Aktor:
Doppelachsiger Dreh-Drückgeber mit programmierbarer hapischer Rückmeldung.
Nachtrag: Das geht vielleicht nicht zufriedenstellend, wenn man sehr langsam dreht, weil der Motor dabei im Open-Loop-Betrieb laufen muss. Die Zeiger-Module haben eine große Über- bzw. Untersetzung, das muss man ausprobieren.
Sehr guter Artikel dazu: Sensorlose Regelung von Schrittmotoren
Realisierung
Um bei hohen Drehzahlen trotz der Induktionsspannungen ausreichend hohe Spannungen für die Schrittmotoren in den VID28-Modulen erzeugen zu können, werden die Schrittmotoren mit bis zu 10V angetrieben. Da hierfür nur 20mA benötigt werden, kommen DA-Umsetzer und Operationsverstärker zum Einsatz, denn sie sind billiger und verursachen weniger Störungen (EMV) als PWM und H-Brücken.
- 16-Bit 2-Kanal DAC PT8211 (ca. 10ct)
- 4-fach Operationsverstärker: LM324 (ca. 5ct) oder MC33204
- Siehe 'VID28-als-Generator.png'
Zur Steuerung wird entweder der µC STM32F030F4P6 (ca. 50ct, 3,3V) oder der STM8S103F3P6 (ca. 25ct, 5,0V) eingesetzt.
| STM8S103F3P6 | STM32F030F4P6 | |
|---|---|---|
| Versorgung | 5V, wie DAC | 3,3V, dafür separat für ADC |
| Remote-Schnittstelle | UART (auch zum Debuggen oder für Bootloader) | I²C |
| DMA | nein | ja |
Pin-Belegungen
Pin-Belegung STM32F030F4P6
| Pin | GPIO | µC-Funktion | Uhr-Funktion | Kommentar |
|---|---|---|---|---|
| 1 | BOOT0 | (BOOT) | Kann über einen Pin auf der Stiftleiste auf 1 gezogen werden, zum flashen | |
| 2 | PF0 | Output | RS485-OE | Output-Enable des optionalen RS-485-Treibers |
| 3 | PF1 | Input | Taster | Taster für die Umsetzung als Dreh-Drück-Bedienelement |
| 4 | NRST | (BOOT) | Kann über einen Pin auf der Stiftleiste auf 0 gezogen werden, zum flashen | |
| 5 | VDDA | (Supply) | Analog-Referenzspannung, wird über separaten Spannungsregler erzeugt | |
| 6 | PA0 | ADC_IN0 | Shunt 1 | Spannungsabfall am Shunt vor der Motor-Wicklung, ±20mA ≙ 0..3,3V |
| 7 | PA1 | ADC_IN1 | Shunt 2 | Spannungsabfall am Shunt vor der Motor-Wicklung, ±20mA ≙ 0..3,3V |
| 8 | PA2 | ADC_IN2 | Shunt 3 | Spannungsabfall am Shunt vor der Motor-Wicklung, ±20mA ≙ 0..3,3V |
| 9 | PA3 | ADC_IN3 | Shunt 4 | Spannungsabfall am Shunt vor der Motor-Wicklung, ±20mA ≙ 0..3,3V |
| 10 | PA4 | TIM14_CH1 | PT8211 - WS | Word-Select für Digital-Analog-Umsetzer |
| 11 | PA5 | SPI1_SCK | PT8211 - BCK | Bit-Clock für Digital-Analog-Umsetzer, wird per BCK-Select umgeschaltet |
| 12 | PA6 | TIM14_CH1, ADC_IN6 | Hall / Counter | Je nach Bestückungsvariante: Spannung ais Hall-Sensor oder Frequenz aus RC-Schwingkreis für das Homing |
| 13 | PA7 | SPI1_MOSI | PT8211 - DIN | Data-Input für Digital-Analog-Umsetzer |
| 14 | PB1 | TIM3_CH4 | BCK-Select | Umschaltung für das PT8211-BCK-Signal, um zwei DAUs an einem SPI betreiben zu können |
| 15 | VSS | (Supply) | Versorgungs- und Signal-Masse | |
| 16 | VDD | (Supply) | Spannungsversorgung, wird über separaten Spannungsregler erzeugt | |
| 17 | PA9 | USART1_TX | Bootloader, Debug, RS485 TX | TX-Ausgang für USB-VCOM und RS-485 |
| 18 | PA10 | USART1_RX | Bootloader, Debug, RS485 RX | RX-Eingang für USB-VCOM und RS-485 |
| 19 | PA13 | SWDIO | (SWIM) | SWIM-Anschluss für ISP und ICD |
| 20 | PA14 | SWCLK | (SWIM) | SWIM-Anschluss für ISP und ICD |
Pin-Belegung STM8S103F3P6
| Pin | GPIO | µC-Funktion | Uhr-Funktion | Kommentar |
|---|---|---|---|---|
| 1 | D4 | TIM2_CH1 | Counter | Bestückungsvariante: Frequenz aus RC-Schwingkreis für das Homing |
| 2 | D5 | ADC_IN5 | Shunt 4 | Spannungsabfall am Shunt vor der Motor-Wicklung, ±20mA ≙ 0..3,3V |
| 3 | D6 | ADC_IN6 | Shunt 3 | Spannungsabfall am Shunt vor der Motor-Wicklung, ±20mA ≙ 0..3,3V |
| 4 | - | NRST | (SWIM) | SWIM-Anschluss für ISP und ICD |
| 5 | A1 | Output | BCK-Select | Umschaltung für das PT8211-BCK-Signal, um zwei DAUs an einem SPI betreiben zu können |
| 6 | A2 | Input | Taster | Taster für die Umsetzung als Dreh-Drück-Bedienelement |
| 7 | - | VSS | (Supply) | Versorgungs- und Signal-Masse |
| 8 | - | Reg.-Capa | (1.8V-Capa) | (externer Kondensator) |
| 9 | - | VDD | (Supply) | Spannungsversorgung, über Spannungsregler |
| 10 | A3 | (frei) | (freier Pin) | |
| 11 | B5 | I2C SDA | I²C SDA | Fernsteuerung der Uhr über I²C |
| 12 | B4 | I2C SCL | I²C SCL | Fernsteuerung der Uhr über I²C |
| 13 | C3 | (frei) | (freier Pin) | |
| 14 | C4 | ADC_IN0 | Shunt 1 | Spannungsabfall am Shunt vor der Motor-Wicklung, ±20mA ≙ 0..3,3V |
| 15 | C5 | SPI1_SCK | PT8211 - BCK | Bit-Clock für Digital-Analog-Umsetzer, wird per BCK-Select umgeschaltet |
| 16 | C6 | SPI1_MOSI | PT8211 - DIN | Data-Input für Digital-Analog-Umsetzer |
| 17 | C7 | Output | PT8211 - WS | Word-Select für Digital-Analog-Umsetzer |
| 18 | D1 | SWIM | (SWIM) | SWIM-Anschluss für ISP und ICD |
| 19 | D2 | ADC_IN3 | Shunt 2 | Spannungsabfall am Shunt vor der Motor-Wicklung, ±20mA ≙ 0..3,3V |
| 20 | D3 | ADC_IN4 | Hall | Bestückungsvariante: Spannung aus Hall-Sensor für das Homing |