AS5311 Bascom

Pytania, kody i porady dotyczące nie tylko Bascom.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

AS5311 Bascom

Post autor: Jacek » 22 gru 2018, 20:57

Witam - czy jest ktoś na forum kto ma doświadczenie z programową obsługą w Bascom'ie układu AS5311 - chciałbym zrobić DRO do mojej tokarki Tytan750 i ma to być właśnie w Bascom'ie - link do datasheet https://ams.com/documents/20143/36005/A ... b9224bab8c
Zdrowych Pogodnych Świąt Bożego Narodzenia oraz Szczęśliwego Nowego 2019 roku.
pozdrawiam Jacek.
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: AS5311 Bascom

Post autor: Henryk » 23 gru 2018, 13:03

Witam :D Jacku .
Posiadam w pracy podobny sprzęt do twojej tokarki jako "zabawka " do doraźnych dłubanek . :arrow: https://www.kammar24.pl/proma-tokarka-k ... 29875.html
Montowanie DRO do takich tokarek mija się z celem , stabilność takich maszynek pozostawia wiele do życzenia , sama konstrukcja imaka nożowego jest bardzo kiepska , przy obróbce stali wszystko aż jęczy .
Szkoda czasu i kasy na montaż DRO ;)
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: AS5311 Bascom

Post autor: Jacek » 23 gru 2018, 15:58

Witam Henryku - ja myślę wręcz odwrotnie właśnie przy takich maszynkach DRO jest wręcz niezastąpione dla mnie taka tokarka jest w sam raz nie robię produkcji do zastosowań home made jest w sam raz.
pozdrawiam Jacek.
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: AS5311 Bascom

Post autor: Henryk » 23 gru 2018, 16:59

Pewnie ! , że taka tokareczka jest przydatna , mam do dyspozycji dwie , taką jak w linku i malutką do robótek bardzo małych ;)
Niestety nim rozpocznę pracę muszę zawsze likwidować luzy by cokolwiek w miarę precyzyjnie wytoczyć .
Jeśli wystarczy Ci pomiar wzdłuż , to zamontuj sobie elektroniczną suwmiarkę pod suportem i masz gotowca ;)
Liniały magnetyczne masz oryginalne ?

Zamiast się męczyć , zamontuj sobie coś takiego ;) :arrow: https://www.sklep-arkom.net.pl/pl/p/ACC ... 04-11/6090

Tu coś lepszego :arrow: http://sklep.cncprofi.com/linial-magnet ... 01-mm.html
Ceny w katalogu na stronce , całkiem przystępne .
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: AS5311 Bascom

Post autor: Jacek » 23 gru 2018, 17:25

Witam - mam zakupiona taśmę magnetyczną MB100 001 https://www.siko-global.com/en-pl/produ ... ds/mb100-1
a tu link do strony z wykorzystaniem AS5311 ale na STM'ie https://www.usinages.com/threads/dro-ma ... se.102109/
oraz filmik https://www.youtube.com/watch?v=HpDoiKzqkWI&t=45s
pozdrawiam Jacek.
P.S. i jeszcze jeden filmik - wersja finalna https://www.youtube.com/watch?v=G3Ak-3ICzbk
Pikczu
Posty: 389
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: AS5311 Bascom

Post autor: Pikczu » 24 gru 2018, 9:46

Cześć znalazłem kod na arduino:
https://github.com/muerzi/AS5311
Pozdrawiam
Pikczu
Pikczu
Posty: 389
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: AS5311 Bascom

Post autor: Pikczu » 24 gru 2018, 9:53

Ha !!
Lepiej 30 sekund szukania i znalazłem czyjąś prace magisterska właśnie w Bascomie.
https://wstag.jcu.cz/StagPortletsJSR168 ... dno=100217
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: AS5311 Bascom

Post autor: niveasoft » 24 gru 2018, 14:16

Widzę, że ta akcja wyszła super i to bardzo cieszy :D

A na najmniejszym marginesie to mieszkałem kiedyś tak blisko granicy z Czechami, że czasem lepiej było oglądać "NOVA" albo "Czeska televizi uvadi" :D a radia to lepiej smigały Hellax i Kiss Morawa :D Także gdyby coś z tego trzeba było przetłumaczyć to ja to czytam jak polski.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: AS5311 Bascom

Post autor: Jacek » 25 gru 2018, 9:37

Witam - dzięki Koledzy za pomoc - będę próbował trenować ten program co podesłał Paweł.
pozdrawiam Jacek.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: AS5311 Bascom

Post autor: Jacek » 25 gru 2018, 11:42

Witam ponownie - Bartku czy możesz jak czas pozwoli dodać komentarze w języku polskim.
  1. '---
  2. ' (c) 2009
  3. '---
  4. 'AS5311
  5. $regfile = "m32def.dat"
  6. $crystal = 1000000
  7. $baud = 19200
  8. '$sim
  9. ' ****************************
  10. '* LCD nastavení *
  11. ' ****************************
  12. '$lib "LCD4.lbx" ' use the alternative library
  13. 'this is like always, define the kind of LCD
  14. Config LCD = 16 * 2
  15. Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3
  16. Config Porta = Output
  17. Config Portc = Input
  18. Config Pina.0 = Input                                       'DO ... data out
  19. Config Porta.1 = Output                                     'CS ... chip Select
  20. Config Porta.2 = Output                                     'CLK ... clock
  21. 'data out
  22. 'Data_out Alias Pina.0
  23. 'Chip select
  24. 'Cs Alias Pina.1
  25. 'hodiny
  26. 'Clk Alias Pina.2
  27. Declare Sub Poloha(byref P As Integer)
  28. Declare Sub Determinuj_polohu(p_old As Integer , P_new As Integer , Sm As Integer , Pp As Integer)
  29. Declare Sub Cti_data(byref Pozice As Integer)
  30. Declare Sub Ssi_init
  31. Declare Sub Ssi_close
  32. Dim Pozice As Integer
  33. Dim Poloha As Long
  34. Dim Vzd_pom As Long
  35. Dim Vzdalenost As Long
  36. Dim Mm2 As Integer
  37. Dim Draha As String * 16
  38. Dim Pom_str As String * 16
  39. Dim Pom_s As Single
  40. Dim Pozice_old As Integer
  41. Dim Pozice_new As Integer
  42. Dim Pozice_start As Integer
  43. Dim Smer As Integer
  44. Dim Priznak As Integer
  45. Dim Fix_prechodu As Bit
  46. Dim Pocitadlo As Integer
  47. Dim Ocf As Byte
  48. Dim Cof As Byte
  49. Dim Lin As Byte
  50. Dim Mag_inc As Byte
  51. Dim Mag_dec As Byte
  52. Dim Parita As Byte
  53. Dim Poms As String * 16
  54. 'určení výchozí polohy při startu čipu
  55. Pocitadlo = 0
  56. Mm2 = 0
  57. Call Poloha(pozice_start)
  58. Pozice_old = Pozice_start
  59. 'main
  60. 'PINC.7 reset. tlačítko
  61. Do
  62. 'stisk reset tlačítka
  63.    Incr Pocitadlo
  64.    If Pinc.7 = 1 Then
  65. 'určení výchozí pozice
  66.       Mm2 = 0
  67.       Call Poloha(pozice_start)
  68.       Pozice_old = Pozice_start
  69.    End If
  70. 'Waitus 10
  71.    Call Poloha(pozice_new)
  72.    Call Determinuj_polohu(pozice_old , Pozice_new , Smer , Priznak)
  73.    If Smer = 0 Then
  74.       If Priznak = 0 Then
  75. 'vzdálenost roste v rámci 2mm
  76.          Vzd_pom = Mm2 * 4096 : Vzd_pom = Vzd_pom - Pozice_start
  77.          Vzdalenost = Vzd_pom + Pozice_new
  78.       Else
  79.       'vzdálenost roste přes 2mm
  80.          Incr Mm2
  81.          Vzd_pom = Mm2 * 4096 : Vzd_pom = Vzd_pom - Pozice_start
  82.          Vzdalenost = Vzd_pom + Pozice_new
  83.       End If
  84.    Else
  85.       If Priznak = 0 Then
  86. 'vzdálenost klesá v rámci 2mm
  87.          Vzd_pom = Mm2 * 4096 : Vzd_pom = Vzd_pom - Pozice_start
  88.          Vzdalenost = Vzd_pom + Pozice_new
  89.       Else
  90. 'vzdálenost klesá přes 2mm
  91.          Decr Mm2
  92.          Vzd_pom = Mm2 * 4096 : Vzd_pom = Vzd_pom - Pozice_start
  93.          Vzdalenost = Vzd_pom + Pozice_new
  94.       End If
  95.    End If
  96. 'Waitus 10
  97. 'hodnota na display se zobrazí každý 20 cyklus
  98.    If Pocitadlo > 50 Then
  99.       Pocitadlo = 0
  100.       Cls
  101.       LCD Pozice_new
  102.       Lowerline
  103.       Pom_s = Vzdalenost / 2048
  104.       LCD Fusing(pom_s , "#.###")
  105.    End If
  106.    Pozice_old = Pozice_new
  107. Loop
  108. End
  109. ' ****************************
  110. 'určí směr pohybu a překrocění hranice 0 /-/ 4095
  111. ' ****************************
  112. Sub Determinuj_polohu(p_old As Integer , P_new As Integer , Sm As Integer , Pp As Integer)
  113. 'Sm ... směr
  114. ' 0 = vzdaluji se od reference
  115. ' 1 = přibližuji se
  116. 'Pp ... příznak přechodu přes 4095
  117. ' 0 = nepřekročil jsem 4095
  118. ' 1 = překročil jsem přes 4095
  119.    Dim Delta As Single
  120.    Dim Sgn_delta As Single
  121.    Dim Abs_delta As Single
  122.    Delta = P_new - P_old
  123.    Abs_delta = Abs(delta)
  124.    Sgn_delta = Sgn(delta)
  125.    Select Case Delta
  126. 'delta je kladné nebo nula
  127.       Case Is >= 0
  128.          If Abs_delta < 1000 Then
  129. 'vzdálenost roste a jsem v rozsahu 2 mm
  130.             Sm = 0 : Pp = 0
  131.          Else
  132. 'vzdálenost klesá a překročil jsem 2 mm
  133.             Sm = 1 : Pp = 1
  134.          End If
  135. 'delta je záporné
  136.       Case Else
  137.          If Abs_delta < 1000 Then
  138. 'vzdálenost klesá a jsem v rozsahu 2 mm
  139.             Sm = 1 : Pp = 0
  140.          Else
  141. 'vzdálenost klesá a překročil jsem 2 mm
  142.             Sm = 0 : Pp = 1
  143.          End If
  144.    End Select
  145. End Sub
  146. ' ****************************
  147. 'vyčte polohu z čipu
  148. ' ****************************
  149. Sub Poloha(p As Integer)
  150. 'inicializace čipu
  151.    Ssi_init
  152. 'čtení hodnoty
  153.    Call Cti_data(p)
  154. 'ukončení komunikace s čipem
  155.    Ssi_close
  156. End Sub
  157.  
  158.  ' ****************************
  159. 'Přečte data z měřiče, bit po bitu
  160. ' ****************************
  161. Sub Cti_data(byref Pozice As Integer)
  162.    Dim Pom As Byte
  163. 'Pin 2 portu A jsou hodiny
  164. 'Proměnná Pozice vrací hodnotu
  165.    Pozice = 0
  166. 'D11
  167.    Reset Porta.2
  168.    If Pinc.0 = 1 Then
  169.       Pozice = Pozice + 1
  170.    End If
  171.    Set Porta.2
  172. 'D10
  173.    Pozice = Pozice * 2
  174.    Reset Porta.2
  175.    If Pinc.0 = 1 Then
  176.       Pozice = Pozice + 1
  177.    End If
  178.    Set Porta.2
  179. 'D9
  180.    Pozice = Pozice * 2
  181.    Reset Porta.2
  182.    If Pinc.0 = 1 Then
  183.       Pozice = Pozice + 1
  184.    End If
  185.    Set Porta.2
  186. 'D8
  187.    Pozice = Pozice * 2
  188.    Reset Porta.2
  189.    If Pinc.0 = 1 Then
  190.       Pozice = Pozice + 1
  191.    End If
  192.    Set Porta.2
  193. 'D7
  194.    Pozice = Pozice * 2
  195.    Reset Porta.2
  196.    If Pinc.0 = 1 Then
  197.    End If
  198.    Set Porta.2
  199. 'D6
  200.    Pozice = Pozice * 2
  201.    Reset Porta.2
  202.    If Pinc.0 = 1 Then
  203.       Pozice = Pozice + 1
  204.    End If
  205.    Set Porta.2
  206. 'D5
  207.    Pozice = Pozice * 2
  208.    Reset Porta.2
  209.    If Pinc.0 = 1 Then
  210.       Pozice = Pozice + 1
  211.    End If
  212.    Set Porta.2
  213. 'D4
  214.    Pozice = Pozice * 2
  215.    Reset Porta.2
  216.    If Pinc.0 = 1 Then
  217.       Pozice = Pozice + 1
  218.    End If
  219.    Set Porta.2
  220. 'D3
  221.    Pozice = Pozice * 2
  222.    Reset Porta.2
  223.    If Pinc.0 = 1 Then
  224.       Pozice = Pozice + 1
  225.    End If
  226.    Set Porta.2
  227. 'D2
  228.    Pozice = Pozice * 2
  229.    Reset Porta.2
  230.    If Pinc.0 = 1 Then
  231.       Pozice = Pozice + 1
  232.    End If
  233.    Set Porta.2
  234. 'D1
  235.    Pozice = Pozice * 2
  236.    Reset Porta.2
  237.    If Pinc.0 = 1 Then
  238.       Pozice = Pozice + 1
  239.    End If
  240.    Set Porta.2
  241. 'D0
  242.    Pozice = Pozice * 2
  243.    Reset Porta.2
  244.    If Pinc.0 = 1 Then
  245.       Pozice = Pozice + 1
  246.    End If
  247.    Set Porta.2
  248. 'čtení stavových bitů
  249. 'OCF
  250. 'Waitus 10
  251.    Reset Porta.2
  252.    Ocf = Pinc.0
  253.    Set Porta.2
  254. 'COF
  255. 'Waitus 10
  256.    Reset Porta.2
  257.    Cof = Pinc.0
  258.    Set Porta.2
  259. 'LIN
  260. 'Waitus 10
  261.    Reset Porta.2
  262.    Lin = Pinc.0
  263.    Set Porta.2
  264. 'Mag_INC
  265. 'Waitus 10
  266.    Reset Porta.2
  267.    Mag_inc = Pinc.0
  268.    Set Porta.2
  269. 'Mag_DEC
  270. 'Waitus 10
  271.    Reset Porta.2
  272.    Mag_dec = Pinc.0
  273. End Sub
  274. ' ****************************
  275. ' ****************************
  276. Sub Ssi_init
  277. 'A.1 CS ¨¨¨¨¨______
  278. 'A.2 CLK ¨¨¨¨¨¨¨__¨¨
  279. ' us 2 1 1 1
  280. 'PortA.2 CLK ... clock
  281.    Set Porta.2
  282. 'PortA.1 CS ... chip select
  283.    Set Porta.1
  284.    Waitus 2
  285.    Reset Porta.1
  286.    Waitus 1
  287.    Reset Porta.2
  288.    Waitus 1
  289.    Set Porta.2
  290.    Waitus 1
  291. End Sub
  292. ' ****************************
  293. ' ****************************
  294. Sub Ssi_close
  295. 'A.1 CS ___¨¨¨¨
  296. 'A.2 CLK _¨¨¨¨¨¨
  297. ' us 1 2
  298. 'čtu ^
  299. 'PortA.2 CLK ... clock
  300. 'PortA.1 CS ... chip select
  301. 'Parita
  302.    Set Porta.2
  303.    Parita = Pinc.0
  304.    Waitus 1
  305.    Set Porta.1
  306.    Waitus 2
  307. End Sub
  308. ' ****************************


pozdrawiam Jacek.
ODPOWIEDZ