diff --git a/kamera_server.py b/kamera_server.py index 8356236..8cf5a5e 100644 --- a/kamera_server.py +++ b/kamera_server.py @@ -26,6 +26,8 @@ m2 = motor('kippen', m2_a1, m2_b1, m2_a2, m2_b2, m2_t1, m2_t2, m2_te, m2_es, 1, m1.start() m2.start() +m1.eichen() + #m1.vorwaerts(10) #m1.stop() #m2.stop() diff --git a/src/schrittmotor.py b/src/schrittmotor.py index 723074f..b1be2ca 100644 --- a/src/schrittmotor.py +++ b/src/schrittmotor.py @@ -58,8 +58,15 @@ class motor(): self.pwm3.stop() self.pwm4.stop() - def vorwaerts(self, schritte): + def vorwaerts(self, schritte, eichen=0): ges_schritte = schritte * 8 + + if eichen == 1: + temp_t1 = self.te + temp_t2 = self.te + else: + temp_t1 = self.t1 + temp_t2 = self.t2 if self.halten == 1: self.pwm4.ChangeFrequency(self.freq) @@ -71,14 +78,14 @@ class motor(): self.pos += 1 temp_pos = i * 8 - einzelschritt(self.pwm1, 1, ges_schritte, temp_pos, self.t1, self.t2) - einzelschritt(self.pwm4, 0, ges_schritte, temp_pos + 1, self.t1, self.t2) - einzelschritt(self.pwm2, 1, ges_schritte, temp_pos + 2, self.t1, self.t2) - einzelschritt(self.pwm1, 0, ges_schritte, temp_pos + 3, self.t1, self.t2) - einzelschritt(self.pwm3, 1, ges_schritte, temp_pos + 4, self.t1, self.t2) - einzelschritt(self.pwm2, 0, ges_schritte, temp_pos + 5, self.t1, self.t2) - einzelschritt(self.pwm4, 1, ges_schritte, temp_pos + 6, self.t1, self.t2) - einzelschritt(self.pwm3, 0, ges_schritte, temp_pos + 7, self.t1, self.t2) + einzelschritt(self.pwm1, 1, ges_schritte, temp_pos, temp_t1, temp_t2) + einzelschritt(self.pwm4, 0, ges_schritte, temp_pos + 1, temp_t1, temp_t2) + einzelschritt(self.pwm2, 1, ges_schritte, temp_pos + 2, temp_t1, temp_t2) + einzelschritt(self.pwm1, 0, ges_schritte, temp_pos + 3, temp_t1, temp_t2) + einzelschritt(self.pwm3, 1, ges_schritte, temp_pos + 4, temp_t1, temp_t2) + einzelschritt(self.pwm2, 0, ges_schritte, temp_pos + 5, temp_t1, temp_t2) + einzelschritt(self.pwm4, 1, ges_schritte, temp_pos + 6, temp_t1, temp_t2) + einzelschritt(self.pwm3, 0, ges_schritte, temp_pos + 7, temp_t1, temp_t2) if self.halten == 1: self.pwm4.ChangeFrequency(self.freq_halten) @@ -86,9 +93,16 @@ class motor(): else: self.pwm4.ChangeDutyCycle(0) - def rueckwaerts(self, schritte): + def rueckwaerts(self, schritte, eichen=0): ges_schritte = schritte * 8 + if eichen == 1: + temp_t1 = self.te + temp_t2 = self.te + else: + temp_t1 = self.t1 + temp_t2 = self.t2 + if self.halten == 1: self.pwm4.ChangeFrequency(self.freq) @@ -100,14 +114,14 @@ class motor(): self.pos -= 1 temp_pos = i * 8 - einzelschritt(self.pwm3, 1, ges_schritte, temp_pos, self.t1, self.t2) - einzelschritt(self.pwm4, 0, ges_schritte, temp_pos + 1, self.t1, self.t2) - einzelschritt(self.pwm2, 1, ges_schritte, temp_pos + 2, self.t1, self.t2) - einzelschritt(self.pwm3, 0, ges_schritte, temp_pos + 3, self.t1, self.t2) - einzelschritt(self.pwm1, 1, ges_schritte, temp_pos + 4, self.t1, self.t2) - einzelschritt(self.pwm2, 0, ges_schritte, temp_pos + 5, self.t1, self.t2) - einzelschritt(self.pwm4, 1, ges_schritte, temp_pos + 6, self.t1, self.t2) - einzelschritt(self.pwm1, 0, ges_schritte, temp_pos + 7, self.t1, self.t2) + einzelschritt(self.pwm3, 1, ges_schritte, temp_pos, temp_t1, temp_t2) + einzelschritt(self.pwm4, 0, ges_schritte, temp_pos + 1, temp_t1, temp_t2) + einzelschritt(self.pwm2, 1, ges_schritte, temp_pos + 2, temp_t1, temp_t2) + einzelschritt(self.pwm3, 0, ges_schritte, temp_pos + 3, temp_t1, temp_t2) + einzelschritt(self.pwm1, 1, ges_schritte, temp_pos + 4, temp_t1, temp_t2) + einzelschritt(self.pwm2, 0, ges_schritte, temp_pos + 5, temp_t1, temp_t2) + einzelschritt(self.pwm4, 1, ges_schritte, temp_pos + 6, temp_t1, temp_t2) + einzelschritt(self.pwm1, 0, ges_schritte, temp_pos + 7, temp_t1, temp_t2) if self.halten == 1: self.pwm4.ChangeFrequency(self.freq_halten) @@ -115,6 +129,13 @@ class motor(): else: self.pwm4.ChangeDutyCycle(0) + def eichen(self): + if GPIO.input(self.endschalter) == GPIO.LOW: + self.vorwaerts(10, 1) + + self.rueckwaerts(self.schritte_max, 1) + self.pos = 0 + def einzelschritt(spule, status, ges_schritte, schritt, t1, t2): w = (schritt * 100 / (ges_schritte - 1)) * 1.8 s = round(math.sin(math.radians(w)), 2)