 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Tor Apr 14, 2015 11:06 pm Naslov sporočila: BeagleBone Black kot LinuxCNC krmilnik |
|
|
Pri preučevanju možnosti za krmilnik CNC rezkalnika sem našel zanimiv projekt imenovan Machinekit.
Gre za samostojen LinuxCNC krmilnik na plošči BeagleBone Black (BBB) sicer namenjen za krmiljenje 3D tiskalnika.
Zanimiv je predvsem koncept BeBoPr oziroma BeBoPr-Bridge, kjer se koračniki, stikala ipd. priključijo direktno na BBB vodila ter LinuxCNC upravljamo direktno iz BBB zaslona.
Ker je LinuxCNC precej univerzalna platforma, bi bilo možno predelati obstoječi 3Dp krmilnik v klasičnega rezkalnega.
Potrebno bi bilo odstraniti podporo za temperaturne senzorje ter grelce ter uvesti tipko eStop, sondo Probe (Z-ničenje) in pa omogočiti krmilje za špindel (RS-485).
Po navodilu Adding Home/Limit Switches dodajam manjkajoča Home in Limit stikala.
Odstranil sem 3Dp panel s 3Dp logiko ter dodal Huanyang-ov VFD panel, vendar je to tudi vse, saj kot tak pač še ne deluje.
Ima kdo slučajno kaj več izkušenj v tej smeri?
Janez
Opis: |
|
Velikost datoteke: |
989.47 KB |
Pogledana: |
18 krat |

|
Opis: |
|
Velikost datoteke: |
1 MB |
Pogledana: |
9 krat |

|
_________________ Pa sam programirat sem hotu!
Nazadnje urejal/a galjotj Ned Apr 19, 2015 8:16 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
trot Član


Pridružen-a: Čet 18 Jan 2007 20:25 Prispevkov: 1282 Aktiv.: 5.72 Kraj: glej fogl
|
Objavljeno: Sre Apr 15, 2015 9:43 pm Naslov sporočila: |
|
|
In kje konkretno se ti ustavi? Bolj definiraj.
Zadeva je enostavna, če razumeš koncept. Če ga ne, potem ti predlagam da za začetek narediš en primer s prižiganjem ledic. Popravit/napisat moraš .hal fajl.
nastaviš vhode/izhode na BBB:
loadrt hal_bb_gpio user_leds=0,1,2,3 input_pins=107, 111 output_pins=113
Za ledice naloži siggen (z loadrt), mu določi thread (z addf) potem pa zveži
net TvojaLedica siggen.0.clock => bb_gpio.userled0
potem pa z setp spreminjaj frekvenco, in moral bi videt spremembo v hitrosti utripanja ene od modrih ledic.
setp siggen.0.frequency 10
------------------
Za touch probo rabiš samo eno vrstico:
net TvojaTacProba bb_gpio.p8.in-07 => motion.probe-input
Za e-stop isto:
net TvojStopSignal bb_gpio.p8.in-11 => motion.enable
Za RS485 moraš (predvidevam) napisat nek string, ki ga pošlješ preko rs232 izhoda od BBB. Za to moraš narediti python hal modul, ki ni realtime (ker rs232 ni realtime). Poglej si primer kako se to naredi. Za rs232 nisem delal, sem pa naredil SPI vodilo, kar pa ni bistveno drugače.
_________________ lp, Klemen |
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Čet Apr 16, 2015 12:24 am Naslov sporočila: |
|
|
Zaenkrat zadeva ŠE NI enostavna, ker očitno koncepta še ne razumem, ampak upajmo da bo šlo na bolje....
Mi je znano "loadrt hal_bb_gpio input_pins=107, 111 output_pins=113", ne pa vrinjeni "user_leds=0,1,2,3" ?
"siggen" sem našel v HAL priročniku in je realtime komponenta .
Vloga poimenovanj "TvojaLedica", "TvojaTacProba", "TvojStopSignal" ipd. mi ni jasna...
Se bom defenitivno lotil tele ledice!
Od prej mi pa nista jasni (najmanj) dve stvari.
Kako dodati na "axis" zaslon, na primer, tri manjkajoče znane gumbe za vklapljanje špindla-smeri vrtenja in stop ?
Pri HAL definiranju dir/step pinov mi ni jasno, kje se dobe adrese pinov:
# P8.44 PRU1.out4
setp [PRUCONF](DRIVER).stepgen.00.dirpin 0xA3
ali pa
# P8.11
setp [PRUCONF](DRIVER).stepgen.00.dirpin 0x4D
HVALA za zelo koristno sporočilo
Janez
_________________ Pa sam programirat sem hotu! |
|
Nazaj na vrh |
|
 |
trot Član


Pridružen-a: Čet 18 Jan 2007 20:25 Prispevkov: 1282 Aktiv.: 5.72 Kraj: glej fogl
|
Objavljeno: Čet Apr 16, 2015 8:59 pm Naslov sporočila: |
|
|
user_leds=0,1,2,3 so te 4 modre ledice ki so zraven mrežnega priključka - na BBB plati.
TvojaLedica", "TvojaTacProba", "TvojStopSignal" so imena signalov. To si zmisliš. Če boš dal "halcmd show sig" ti bo pokazalo katere signale imaš in kako so zvezani. Predstavljaj si kot labview, le brez grafičnega vmesnika. Naložiš te real time module (siggen, hal_bb_gpio, itd), ki jih s kabelčki (signali) povežeš med sabo da dosežeš neko želeno funkcionalnost. Cnc stroj "narediš" tako, da modul, ki interpretira G-kodo (motion) ustrezno povežeš z stepgen modulom - če boš krmilil koračnike.
Za hal sintakso si poglej HAL_Manual.
Če hočeš dodat gumbe/prikazovalnike na zaslon si poglej: poglavje 10
Drugače si pa poglej kak primer. Evo en primerček ki sem ga jaz naredil za krmiljenje ledic, ki sta spreminjale frekvenco utripanja glede na temperaturo, ki sem jo meril s termoparom.
Koda: |
# led test
# run the test with: #halrun -I ledtest.hal
# then type: start
# Launch the setup script to make sure hardware setup looks good
loadusr -w /home/linuxcnc/linuxcnc/configs/BeagleBone/KD/ledspiTest/setupledtest.sh
loadusr KD_temperature
loadrt threads name1=base-thread period1=5000000
loadrt hal_bb_gpio user_leds=0,1,2,3 input_pins=107 output_pins=111,113
loadrt siggen num_chan=2
loadrt not count=1
loadrt scale count=1
loadrt time count=1
addf bb_gpio.write base-thread
addf bb_gpio.read base-thread
addf siggen.0.update base-thread
addf not.0 base-thread
addf scale.0 base-thread
addf time.0 base-thread
setp scale.0.gain 0.3
setp scale.0.offset 0
net T1 KD_temperature.T0-R => scale.0.in
net T1scale scale.0.out => siggen.0.frequency
net pulse0 siggen.0.clock => bb_gpio.userled0 bb_gpio.userled1 not.0.in
net pulse0not not.0.out => bb_gpio.userled2 bb_gpio.userled3
start
|
_________________ lp, Klemen |
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Pet Apr 17, 2015 12:15 am Naslov sporočila: |
|
|
Sem naredil naslednje spremembe in izgleda da delujejo :
Koda: |
ini:
#vklop hominga in limita za X
HOME = 0.000
HOME_OFFSET = 0.00
HOME_SEARCH_VEL = -10.0 #0.0
HOME_LATCH_VEL = 10.0 #0.0
#HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
hal:
#home in limiti za X
net home-x bb_gpio.p8.in-08 => axis.0.home-sw-in axis.0.neg-lim-sw-in
setp bb_gpio.p8.in-08.invert 1
net limit-x-max bb_gpio.p8.in-09 => axis.0.pos-lim-sw-in
setp bb_gpio.p8.in-09.invert 1
# ESTOP
net estop-in bb_gpio.p8.in-13 => motion.enable
setp bb_gpio.p8.in-13.invert 1
# Probe sonda
net probe-in bb_gpio.p8.in-19 => motion.probe-input
setp bb_gpio.p8.in-19.invert 1
#kajpak sem dodal 113 in 119 med input_pins |
Ali se "led test" požene samostojno izven LinuxCNC-ja?
Pri gumbih nisem mislil na dodajanje panel-a, kar mi je načeloma jasno, pač pa na gumbe na osnovni display AXIS.
Gumbov za špindel na BePoPr ni ,medtem ko pa na axis_mm so-prilagam slike.
Kako vklopiti torej špindel gumbe ali pa se po drugi strani znebiti A osi ?
Sicer pa me čaka še malo lotanja, potem bo pa zadeva verjetno postala v osnovi funkcionalna.
Načeloma bo to kar hitro....
Hvala in LP
Janez
Opis: |
|
Velikost datoteke: |
750.84 KB |
Pogledana: |
3 krat |

|
Opis: |
|
Velikost datoteke: |
624.45 KB |
Pogledana: |
0 krat |

|
_________________ Pa sam programirat sem hotu! |
|
Nazaj na vrh |
|
 |
trot Član


Pridružen-a: Čet 18 Jan 2007 20:25 Prispevkov: 1282 Aktiv.: 5.72 Kraj: glej fogl
|
Objavljeno: Pet Apr 17, 2015 8:42 pm Naslov sporočila: |
|
|
Ja, ledtest se zažene s konzole: #halrun -I ledtest.hal
Za osi si že ugotovil, moraš nastavit .ini fajl.
Za funkcionalnost moraš ustrezno zvezat posamezne hal module, kot sem ti opisal zgoraj. Poglej si kaj imaš na razpolago Copy-paste:
Koda: |
motion.spindle-forward OUT BIT
TRUE when the spindle should rotate forward
motion.spindle-index-enable I/O BIT
For correct operation of spindle synchronized moves, this signal must be hooked to the index-enable pin of the spindle encoder.
motion.spindle-inhibit IN BIT
When TRUE, the spindle speed is set and held to 0.
motion.spindle-on OUT BIT
TRUE when spindle should rotate
motion.spindle-reverse OUT BIT
TRUE when the spindle should rotate backward
|
Se pravi uporabiš motion.spindle-on izhod, ki ga ustrezno zvežeš.
net ImeSignala motion.spindle-on => tvoj_BBB_izhod
Ko boš zagnal linuxcnc odpri zraven še eno konzolo in vtipkaj
# halcmd show sig
# halcmd show pin
lahko se omejiš samo na določen modul
# halcmd show sig motion
preveri tudi
# halcmd show comp
Tako boš videl trenutne vrednosti posameznih spremenljivk in vhodov/izhodov. Lahko zaženeš grafični pregledovalnik
#halmeter (potem pa izbereš kaj boš gledal)
Sedaj ko znaš pogledat signale lahko preveriš, kaj se dogaja, če klikneš na določen gumb. Če boš kliknil na spindle-on gumb, se mora spreminjat vrednost motion.spindle-on.
_________________ lp, Klemen |
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
|
Nazaj na vrh |
|
 |
trot Član


Pridružen-a: Čet 18 Jan 2007 20:25 Prispevkov: 1282 Aktiv.: 5.72 Kraj: glej fogl
|
|
Nazaj na vrh |
|
 |
S53DZ Član



Pridružen-a: Čet 28 Apr 2011 9:27 Prispevkov: 951 Aktiv.: 5.52 Kraj: Ljubljana
|
Objavljeno: Ned Apr 19, 2015 4:01 pm Naslov sporočila: |
|
|
Za določitev naslova je primerna tale TI aplikacija Pin Mux Utility (za Linux ali Win!):
http://www.ti.com/tool/pinmuxtool
Izhod sta dve txt datoteki z zapisom naslovov.
|
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Ned Apr 19, 2015 8:15 pm Naslov sporočila: |
|
|
Defenitivno bo aplikacija "pinmuxtool" prav prišla, glede na kompliciranost ARM procesorjev.
Pri "device tree" za LinuxCNC imam na sumu, da pri profilu "ARM.BeagleBone.BeBoPr-Bridge" nekaj ne deluje po pričakovanjih.
Ne razumem dobro delovanja datotek setup.bridge.sh, dtc.sh ter BB-LCNC-BEBOPRBR-00A0.dts in če sploh "primejo".
Sumim, da te nastavitve pridejo od nekje drugje .
Sicer je sestava "dts naslavljanja" že omenjena v enem prejšnjih sporočil (TRM poglavje 9.3.51 tabela 9.61).
"Slavnih" adress za npr. "stepgen.xx.xxx 0xXX" pa v predlaganih tabelah ni-te tabeli sem našel že prej, a .....
Sem pa po naključju našel temo, ki sprašuje povsem enako, kot jaz: IO pin configuration of Beaglebone Black
Snel in prevedeno priložil sem datoteko pinmux.ods. Torej v pinmux.xls obstaja stolpec hal_pru_generic GPIO pin number, kjer je omenjeno iskano številčenje.
LP
Janez
Opis: |
|
 Download |
Ime datoteke: |
pinmux.xls |
Velikost datoteke: |
54 KB |
Downloadano: |
2 krat |
_________________ Pa sam programirat sem hotu!
Nazadnje urejal/a galjotj Pon Apr 20, 2015 12:14 am; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
trot Član


Pridružen-a: Čet 18 Jan 2007 20:25 Prispevkov: 1282 Aktiv.: 5.72 Kraj: glej fogl
|
Objavljeno: Ned Apr 19, 2015 9:34 pm Naslov sporočila: |
|
|
Jaz se s tem ukvarjal že kar nekaj časa nazaj, ampak takrat ko sem se, sem si modificiral en tak fajl, ki preverjeno deluje z:
loadrt hal_bb_gpio user_leds=0,1,2,3 input_pins=107 output_pins=111,113
Najprej zaženeš #sudo setup.sh
Potem pa zaženeš hal. Če spreminjam potencial na vhodnem pinu se to vidi znotraj hal-a.
BB-HAL-LEDTEST-00A0.dts
Koda: |
/dts-v1/;
/plugin/;
/ {
compatible = "ti,beaglebone", "ti,beaglebone-black";
/* identification */
part-number = "BB-LCNC-BEBOPR";
version = "00A0";
/* state the resources this cape uses */
exclusive-use =
/* the pin header uses */
"p8.7", /* gpio */
"p8.11", /* gpio */
"p8.13"; /* gpio */
fragment@0 {
target = <&am33xx_pinmux>;
__overlay__ {
ledtest_pins: ledtest_pins {
pinctrl-single,pins = <
0x90 0x3f /* p8.7 input, pull-up, mode 7 */
0x34 0x0f /* p8.11 output, mode 7 */
0x24 0x0f /* p8.13 output, mode 7 */
>;
};
};
};
fragment@1 {
target = <&pruss>;
__overlay__ {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&ledtest_pins>;
};
};
};
|
setup.sh
Koda: |
dtbo_err () {
echo "Error loading device tree overlay file: $DTBO" >&2
exit 1
}
pin_err () {
echo "Error exporting pin:$PIN" >&2
exit 1
}
dir_err () {
echo "Error setting direction:$DIR on pin:$PIN" >&2
exit 1
}
SLOTS=/sys/devices/bone_capemgr.*/slots
# Make sure required device tree overlay(s) are loaded
for DTBO in BB-HAL-LEDTEST ; do
if grep -q $DTBO $SLOTS ; then
echo $DTBO overlay found
else
echo Loading $DTBO overlay
sudo -A su -c "echo $DTBO > $SLOTS" || dtbo_err
sleep 1
fi
done;
if [ ! -r /sys/class/uio/uio0 ] ; then
echo PRU control files not found in /sys/class/uio/uio0 >&2
exit 1;
fi
# Export GPIO pins
# This really only needs to be done to enable the low-level clocks for the GPIO
# modules. There is probably a better way to do this...
while read PIN DIR JUNK ; do
case "$PIN" in
""|\#*)
continue ;;
*)
[ -r /sys/class/gpio/gpio$PIN ] && continue
sudo -A su -c "echo $PIN > /sys/class/gpio/export" || pin_err
sudo -A su -c "echo $DIR > /sys/class/gpio/gpio$PIN/direction" || dir_err
;;
esac
done <<- EOF
66 in # gpio2.2 p8.7
45 out # gpio1.13 p8.11
23 out # gpio0.23 p8.13
EOF
|
_________________ lp, Klemen |
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Pon Apr 20, 2015 12:05 am Naslov sporočila: |
|
|
Jaz ti verjamem, da ti Ledice delajo...
Dela pa tudi meni na "/BeBoPr-Bridge", čeprav ne bi smelo, ker sem odmaknil .dts ter .dtbo datoteki:
Koda: |
machinekit@beaglebone:~/linuxcnc/configs/ARM.BeagleBone.BeBoPr-Bridge$ sudo ./setup.bridge.sh
Loading cape-bebopr-brdg overlay
machinekit@beaglebone:~/linuxcnc/configs/ARM.BeagleBone.BeBoPr-Bridge$ sudo cat /sys/kernel/debug/gpio
GPIOs 0-31, gpio:
gpio-2 (bebopr:e_stp ) out lo
gpio-3 (bebopr:e_dir ) out lo
gpio-4 (bebopr:x_ena ) out hi
gpio-5 (bebopr:y_ena ) out hi
gpio-6 (mmc_cd ) in lo
gpio-14 (bebopr:z_ena ) out hi
gpio-15 (bebopr:e_ena ) out hi |
Ti "x_ena" spadajo k neki stari konfiguraciji.
Ta setup.bridge.sh deluje, ampak je nekdo izločil del za BB-LCNC-BEBOPRBR-00A0.dts ter potem od nekje potegne navedeni "cape".
Ne poznam dobro sintakse, ampak bo treba marsikaj popraviti .
Na splošno je bil nekdo zelo površen, ker sploh ni, pri prilagajanju na "Bridge", popravli komentarjev ipd...
LP
Janez
_________________ Pa sam programirat sem hotu! |
|
Nazaj na vrh |
|
 |
trot Član


Pridružen-a: Čet 18 Jan 2007 20:25 Prispevkov: 1282 Aktiv.: 5.72 Kraj: glej fogl
|
Objavljeno: Pon Apr 20, 2015 9:33 am Naslov sporočila: |
|
|
To kar sem ti prilepil ni za ledice - na p8.7, p8.11 in p8.13 niso priključene ledice, ampak so to pini na P8 korektorju. En pin je vhod, dva sta pa izhoda.
_________________ lp, Klemen |
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Pon Apr 20, 2015 2:05 pm Naslov sporočila: |
|
|
Tale tvoj primer bo kar primeren in tudi uporaben.
Mislim, da sem včeraj dognal problem, ki je mučil celo najine predhodnike.
Bom zvečer še malo preizkusil teorijo in prakso in javim rezultat.
Opomba: Je pa ta dts del dobro poznati, ker omogoča fleksibilno pripravo LinuxCNC sistema.
LP
Janez
_________________ Pa sam programirat sem hotu! |
|
Nazaj na vrh |
|
 |
galjotj Član


Pridružen-a: Pet 02 Nov 2012 15:08 Prispevkov: 231 Aktiv.: 1.50 Kraj: Zgornji Brnik
|
Objavljeno: Tor Apr 21, 2015 12:00 am Naslov sporočila: |
|
|
S tem .dts je po moje tako:
Najprej sestaviš BB-LCNC-BEBOPRBR-00A0.dts datoteko in jo potem z dtc.sh prevedeš v BB-LCNC-BEBOPRBR-00A0.dtbo, katero potem naložiš v kernel.
V primeru ARM.BeagleBone.BeBoPr-Bridge pa je to povsem brez učinka, ker setup.bridge.sh ne naloži omenjene datoteke, ampak popolnoma drugo in sicer bi lahko bila, čeprav ne vem kako in če sploh:
Koda: |
/media/Angstrom/lib/firmware/cape-bebopr-brdg-R2.dtbo kot cape-bebopr-brdg,
ki verjetno nastane iz
/media/Angstrom/lib/firmware/cape-bebopr-brdg-R2.dts |
Vsaj rezultat je temu ustrezen in na koncu javi cape-bebopr-brdg overlay found.
Nič se ni spremenilo, če so ali smo spreminjali BB-LCNC-BEBOPRBR-00A0.dts, ker je naložilo vedno nekaj povsem drugega .
Nisem pa našel še rešitve vplivanja na nastavitve .
LP
Janez
_________________ Pa sam programirat sem hotu! |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 498 dni
Powered by phpBB © 2001, 2005 phpBB Group
|