Einen Servo ansteuern und die Drehzahl von einem Motor ändern, mit Potis.

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Einen Servo ansteuern und die Drehzahl von einem Motor ändern, mit Potis.

      Hi, es ist nur ein Versuch für spätere Projekte, und um ein wenig die Syntax von BASCOM für AVRs kennen zu lernen.

      Auf der Bastelumgebung sind die meisten Bauteile für meine Vorhaben vorhanden und festgeschraubt, geklebt..., also wurde sie mit einem kleinen Projekt eingeweiht.

      Der Attyni85 ist für den Servo der mit einem Poti angesteuert wird und einem Motor bei dem die Drehzahl mit einem Poti verändert wird zuständig, da ich auch ein paar Werte auf einem Display sehen möchte wurde das Signal vom Servo-Poti an einen Atmega8 weitergereicht der die Servowerte und Potiwerte anzeigt.

      Quellcode

      1. ' Compiler: Bascom 2.0.7.5
      2. '
      3. ' Dateiname: Potis-Servo-Motor A85.avr
      4. ' Funktion: mit einem Poti einen Servo ansteuern oder von einem Motor die Drehzahl verändern
      5. ' Datum: Start 10.03.2020, Stand 10.03.2020
      6. ' Von: Naubaddi
      7. '
      8. ' ATtiny85 (B.5 Reset)
      9. '
      10. ' +---v---+
      11. ' PCINT5/RESET/ADC0/dW B.5 |1 8| VCC
      12. ' PCINT3/XTAL1/CLKI/OC1B/ADC3 B.3 |2 7| B.2 SCK/USCK/SCL/ADC1/T0/INT0/PCINT2
      13. ' PCINT4/XTAL2/CLKO/OC1B/ADC2 B.4 |3 6| B.1 MISO/DO/AIN1/OC0B/OC1A/PCINT1
      14. ' GND |4 5| B.0 MOSI/DI/SDA/AIN0/OC0A/OC1A/AREF/PCINT0
      15. ' +-------+
      16. '
      17. ' --- Mikrocontroler Daten... ----------------------------------------------------------------------------------
      18. $regfile = "attiny85.dat"
      19. $crystal = 8000000
      20. $hwstack = 16
      21. $swstack = 16
      22. $framesize = 16
      23. ' &HFF, &H62, &HDF, &HFF ' 1MHz
      24. $PROG &HFF, &HE2, &HDF, &HFF ' 8MHz
      25. ' --- Deklarationen... -----------------------------------------------------------------------------------------
      26. config servos = 1 , servo1 = portb.0 , reload = 10
      27. config portb.0 = output ' Servo
      28. config portb.1 = output ' Motor
      29. config adc = single , prescaler = auto , reference = avcc
      30. config portb.3 = input ' Servo-Poti
      31. config portb.4 = input ' Motor-Poti
      32. enable interrupts
      33. ' --- Variablen, Alias... --------------------------------------------------------------------------------------
      34. dim Poti_Servo as word
      35. dim Servowert as byte
      36. dim Servo_alt as byte
      37. dim Dummer as word
      38. dim Poti_Motor as word
      39. dim an as word
      40. dim aus as word
      41. ' --- Vorbelegung der Variablen und Alias... -------------------------------------------------------------------
      42. const Faktor = 11.130 ' Servobereich 53-145 = 92 (1024Bit : 92 = 11.130)
      43. Motor alias portb.1 ' der Ausgang Nr. 1 für den Motor
      44. an = 0 ' die an-Zeit für den Motor
      45. aus = 1023 ' die aus-Zeit für den Motor
      46. ' --- Programm Anfang ------------------------------------------------------------------------------------------
      47. do
      48. Poti_Motor = getadc(2)
      49. an = Poti_Motor
      50. aus = 1023 - Poti_Motor
      51. Motor = 1
      52. waitus an
      53. Motor = 0
      54. waitus aus
      55. Poti_Servo = getadc(3)
      56. Dummer = Poti_Servo / Faktor
      57. Servowert = Dummer + 54
      58. if Servowert <> Servo_alt then
      59. Servo_alt = Servowert
      60. Servo(1) = Servowert
      61. endif
      62. loop
      63. ' --- Programm Ende --------------------------------------------------------------------------------------------
      64. end
      65. ' --------------------------------------------------------------------------------------------------------------
      Alles anzeigen


      Quellcode

      1. ' Compiler: Bascom 2.0.7.5
      2. ' Dateiname: Poti-Servo-Display A8.avr
      3. ' Funktion: mit einem Poti einen Servo ansteuern und die Werte auf einem Display anzeigen
      4. ' Datum: Start 23.01.2020, Stand 11.03.2020
      5. ' Von: Naubaddi foto-schubser@arcor.de
      6. '
      7. ' Atmega8 (C.6 RESET)
      8. '
      9. ' +----v----+
      10. ' RESET C.6 | 1 28| C.5 ADC5/SCL
      11. ' RXD D.0 | 2 27| C.4 ADC4/SDA
      12. ' TXD D.1 | 3 26| C.3 ADC3
      13. ' INT0 D.2 | 4 25| C.2 ADC2
      14. ' INT1 D.3 | 5 24| C.1 ADC1
      15. ' XCK/T0 D.4 | 6 23| C.0 ADC0
      16. ' VCC | 7 22| GND
      17. ' GND | 8 21| AREF
      18. ' XTAL1/TOSC1 B.6 | 9 20| AVCC
      19. ' XTAL2/TOSC2 B.7 |10 19| B.5 SCK
      20. ' T1 D.5 |11 18| B.4 MISO
      21. ' AIN0 D.6 |12 17| B.3 MOSI/OC2
      22. ' AIN1 D.7 |13 16| B.2 SS/OC1B
      23. ' ICP1 B.0 |14 15| B.1 OC1A
      24. ' +---------+
      25. '
      26. ' --- Mikrocontroler Daten... ----------------------------------------------------------------------------------
      27. $regfile = "m8def.dat"
      28. $crystal = 8000000
      29. $hwstack = 40
      30. $swstack = 40
      31. $framesize = 40
      32. ' &HFF, &HE1, &HD9, &HFF ' 1MHz
      33. $PROG &HFF, &HE4, &HD9, &HFF ' 8MHz
      34. ' --- Deklarationen... -----------------------------------------------------------------------------------------
      35. config lcdpin = pin , Db4 = portd.4 , Db5 = portd.5 , Db6 = portd.6 , Db7 = portd.7 , E = portd.2 , Rs = portd.3
      36. config lcd = 20 * 4
      37. config portd = output
      38. cursor off
      39. cls
      40. config servos = 1 , servo1 = portb.0 , reload = 10
      41. config portb = output
      42. enable interrupts
      43. config adc = single , prescaler = auto , reference = avcc
      44. config portc.0 = input
      45. ' --- Variablen, Alias... --------------------------------------------------------------------------------------
      46. const Faktor = 10.779 ' Servobereich 51-145 = 94 ergibt 1024Bit : 94 = 10.779
      47. dim Potiwert as word
      48. dim Servowert as byte
      49. dim Servo_alt as byte
      50. dim dumm as single
      51. ' --- Vorbelegung der Variablen, Alias... ----------------------------------------------------------------------
      52. locate 1,1
      53. lcd "Poti :"
      54. locate 2,1
      55. lcd "--------------------"
      56. locate 3,1
      57. lcd "Servo:"
      58. locate 4,1
      59. lcd "--------------------"
      60. ' --- Programm Anfang ------------------------------------------------------------------------------------------
      61. do
      62. Potiwert = getadc(0)
      63. locate 1,7
      64. Select case Potiwert
      65. case 0 to 9
      66. lcd " " ; Potiwert
      67. case 10 to 99
      68. lcd " " ; Potiwert
      69. case 100 to 999
      70. lcd " " ; Potiwert
      71. case 1000 to 9999
      72. lcd Potiwert
      73. end select
      74. dumm = Potiwert / Faktor
      75. Servowert = dumm + 51
      76. if Servowert <> Servo_alt then
      77. Servo_alt = Servowert
      78. locate 3,8
      79. Select case Servowert
      80. case 51 to 94
      81. lcd " " ; Servowert ; " Links "
      82. case 100 to 146
      83. lcd Servowert ; " Rechts"
      84. case 95 to 99
      85. lcd " " ; Servowert ; " Mitte "
      86. end select
      87. Servo(1) = Servowert
      88. endif
      89. loop
      90. ' --- Programm Ende --------------------------------------------------------------------------------------------
      91. end
      92. ' --------------------------------------------------------------------------------------------------------------
      Alles anzeigen
      Und ein Video gibt es auch:
      Poti-Servo-Motor-Display

      Grüßle, Naubaddi

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Naubaddi ()