Skocz do zawartości

David36

Użytkownicy
  • Zawartość

    3
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O David36

  • Ranga
    1/10

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

129 wyświetleń profilu
  1. Stworzyem prosta aplikacje w tkinter - Python do sterowania silnikiem krokowym ale potzrebuje pomocy z kodem, chodzi mi o zmienne (kroki, szybkosc i przyspieszenie) pobierane z suwaka. Nie jestem pewien jakiego rodzaju zmiennych tutaj uzyc. Chce sterowac ta aplikacja z raspberry pi kod Arduino poprzez serial port. Dolanczam kod, moze komus sie kiedys do czegos przyda. import tkinter as tk from tkinter import * class Application(tk.Frame): def __init__(self, root, *args, **kwargs): tk.Frame.__init__(self, root, *args, **kwargs) #self.variable_name = variable_name self.sld1 = Scale(root, from_=0, to=35, orient='horizontal', length=250, resolution='5', tickinterval=5, command=lambda value, name=tk.Scale: self.report_change(name, value)) self.sld1.grid(column=0, row=1, rowspan=1, columnspan=1, sticky='NSEW', pady=10, padx=10) self.Label = tk.Label(root, text='Steps') self.Label.grid(row=2, column=0, sticky=W, pady=2) self.sld2 = Scale(root, from_=100, to=1000, orient='horizontal', length=250, resolution='100', tickinterval=250, command=lambda value, name=tk.Scale: self.report_change(name, value)) self.sld2.grid(column=0, row=3, rowspan=1, columnspan=1, sticky='NSEW', pady=10, padx=10) self.Label2 = tk.Label(root, text='Velocity') self.Label2.grid(row=4, column=0, sticky=W, pady=2) self.sld3 = Scale(root, from_=100, to=1000, orient='horizontal', length=250, resolution='100', tickinterval=250, command=lambda value, name=tk.Scale: self.report_change(name, value)) self.sld3.grid(column=0, row=5, rowspan=1, columnspan=1, sticky='NSEW', pady=10, padx=10) self.Labe3 = tk.Label(root, text='Acceleratiom') self.Labe3.grid(row=6, column=0, sticky=W, pady=2) #self.Label.config(bg="#00ffff") def action(): global output global variable output.insert(Motor_Run, Motor_STOP, variable.get()) variable.grid() self.quitButton1 = tk.Button(root, text='Home', command=self.quit) self.quitButton1.grid(row=8, column=0, sticky=W, pady=12, padx=5) self.quitButton2 = tk.Button(root, text='STOP', command=action) self.quitButton2.grid(row=8, column=1, sticky=W, padx=5) self.quitButton3 = tk.Button(root, text='Run', command=action) self.quitButton3.grid(row=8, column=2, sticky=W, pady=1, padx=1) # self.quitButton3 = tk.Button(self, text='Exit', command=self.quit) # self.quitButton3.grid(row=9, column=2, sticky=W) def report_change(self, name, value): print("%s changed to %s" % (name, value)) if __name__ == '__main__': root = tk.Tk() root.geometry('365x360') root.title("Stepper Motor Control") app = Application(root) label = tk.Label root.mainloop() ArduinoCode: #include <AccelStepper.h> // Define a stepper and the pins it will use AccelStepper stepper; // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5 void setup() { // Change these to suit your stepper if you want stepper.setMaxSpeed(100); stepper.setAcceleration(20); stepper.moveTo(500); } void loop() { // If at the end of travel go to the other end if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); }
  2. Witam, Potrzebuje pomocy w sterowaniu silnikiem krokowym Nema17HS5425. Do sterowania uzywam Raspberry Pi 3 wraz ze sterownikiem drv8825. Nie mam zbyt duzej wiedzy na temat programowania w Python i utknalem w... Znalazlem przykladowy program, wszystko polaczylem, silnik porusza sie w obu kierunkach. Chodzi mi o to zeby byla mozliwosc sterowania czestotliwoscia oraz amplituda podczas pracy a nie mam wystarczajacej wiedzy zeby to zrobic. Planuje tez uzyc jednej badz dwoch krancowek zeby silnik znajdowal punkt zerowy przed startem. Dolanczam kod bazowy, jesli ktos mialby jakies pomysly jak to usprawnic, z gory dziekuje. from time import sleep import RPi.GPIO as GPIO import subprocess from time import sleep DIR = 20 # Direction GPIO Pin STEP = 21 # Step GPIO Pin CW = 17 # Clockwise Rotation CCW = 0 # Counterclockwise Rotation SPR = 200 # Steps per Revolution (360 / 1.8) GPIO.setmode(GPIO.BCM) GPIO.setup(DIR, GPIO.OUT) GPIO.setup(STEP, GPIO.OUT) GPIO.output(DIR, CW) MODE = (14, 15, 18) # Microstep Resolution GPIO Pins GPIO.setup(MODE, GPIO.OUT) RESOLUTION = {'Full': (0, 0, 0), 'Half': (1, 0, 0), '1/4': (0, 1, 0), '1/8': (1, 1, 0), '1/16': (0, 0, 1), '1/32': (1, 0, 1)} GPIO.output(MODE, RESOLUTION['Full']) step_count = SPR delay = .0008 for x in range(step_count): GPIO.output(STEP, GPIO.HIGH) sleep(delay) GPIO.output(STEP, GPIO.LOW) sleep(delay) sleep(.005) GPIO.output(DIR, CCW) for x in range(step_count): GPIO.output(STEP, GPIO.HIGH) sleep(delay) GPIO.output(STEP, GPIO.LOW) sleep(delay) GPIO.cleanup()
  3. Witam, jestem w trakcie planowania budowy malego edukacyjnego stolu do prowizorycznych badan trzesien ziemi - dwie osie x, y cos jak drukarka 3d czy cnc. Potrzebuje dobrac jakis dynamiczny silnik 12/24V. Problem polega na tym zeby max przyspieszenie bylo w granicach 4G (ok38m/s) na krotkim odcinku - okolo 2cm, max 3cm. Dolna os bedzie poruszala sie prawie dwa razy wolniej od gornej wiec przyspieszenie w tym przypadku spadnie do okolo 2G. Problemem jest gorna czesc o masie calkowitej okolo 0.5kg. Calosc bedzie sterowana za pomoca Raspberry pi3. Wyszlo mi jezeli sie nie pomylilem ze moment obr powinien byc w granicach 2Nm. Silnik bedzie pracowal zmieniajac kierunek przez nie wiecej niz kilka minut. Bylbym wdzieczny za jakies porady; czy lepiej uzyc jakis silnik krokowy czy serwo bo nie bardzo wiem jak ten silnik dobrac.
×
×
  • Utwórz nowe...