Hallo,
ich habe folgendes Problem und zwar lässt sich der Lidar nur teilweise mit einem Arduino verbinden, zwar habe ich es einmal geschafft, dass sich der Motor dreht und die Ausgabe auch funktioniert, doch jetzt geht es plötzlich nichtmehr. Ich habe den Motor mit einem Netzteil angesteuert, dies funktioniert. Auch per USB (am PC) funktioniert der Lidar ohne Probleme. Ich habe auch probiert bei dem simple connect Serial1 bzw. 2 oder 3 anzugeben, hat auch nichts gebracht. Momentan dreht sich der Motor nicht und der Serielle Monitor gibt "P" oder so aus. Hat jemand die Dokumentation zu der Arduino Bibliothek. Ich benutze die RPLidar driver Bibliothek von RoboPeak.
(Alle Connections sind Richtig zu 150%)
Das Arduino Board war ein MEGA2560.
Zudem leuchtet manchmal die RX LED solide und manchmal blinkt diese, zudem Leuchtet die L LED, ich weiß nicht was das heißt aber ja.
Mfg Joa
Von was schreibst Du?
Einem Lidar?
Stell Dir vor, ich kann mich dran erinnern, was das ist.
Lese Deinen Text.
Was liest Du da raus?
Geht nicht. Richtig?
Und nu?
Was erwartest Du? Da ist 0 Information bei.
Ausser 150% alle Connections richtig.
Davon mal abgesehen... Das haben hier schon andere gesagt..
Wer soll sich denn da jetzt einen Reim drauf machen?
Also komm mit Informationen.
Aufbau, Code, Herkunft von Fremdcode aka libs, etc pp.
Ich stocher ja mal gerne auch im Nebel, aber hier ist stockdunkel.
xD
Hier ist die Lib:
Code ist hier:
/*
* RoboPeak RPLIDAR Arduino Example
* This example shows the easy and common way to fetch data from an RPLIDAR
*
* You may freely add your application code based on this template
*
* USAGE:
* ---------------------------------
* 1. Download this sketch code to your Arduino board
* 2. Connect the RPLIDAR's serial port (RX/TX/GND) to your Arduino board (Pin 0 and Pin1)
* 3. Connect the RPLIDAR's motor ctrl pin to the Arduino board pin 3
*/
/*
* Copyright (c) 2014, RoboPeak
* All rights reserved.
* RoboPeak.com
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
// This sketch code is based on the RPLIDAR driver library provided by RoboPeak
#include <RPLidar.h>
// You need to create an driver instance
RPLidar lidar;
#define RPLIDAR_MOTOR 3 // The PWM pin for control the speed of RPLIDAR's motor.
// This pin should connected with the RPLIDAR's MOTOCTRL signal
void setup() {
// bind the RPLIDAR driver to the arduino hardware serial
lidar.begin(Serial);
// set pin modes
pinMode(RPLIDAR_MOTOR, OUTPUT);
}
void loop() {
if (IS_OK(lidar.waitPoint())) {
float distance = lidar.getCurrentPoint().distance; //distance value in mm unit
float angle = lidar.getCurrentPoint().angle; //anglue value in degree
bool startBit = lidar.getCurrentPoint().startBit; //whether this point is belong to a new scan
byte quality = lidar.getCurrentPoint().quality; //quality of the current measurement
//perform data processing here...
} else {
analogWrite(RPLIDAR_MOTOR, 0); //stop the rplidar motor
// try to detect RPLIDAR...
rplidar_response_device_info_t info;
if (IS_OK(lidar.getDeviceInfo(info, 100))) {
// detected...
lidar.startScan();
// start motor rotating at max allowed speed
analogWrite(RPLIDAR_MOTOR, 255);
delay(1000);
}
}
}
Aufbau ist wie hier:
nur dass ich einen Arduino Mega habe
Mfg
Der hat auch nen Mega - nur hat der schon in seinen Ausgangspost alle verwirrt.
Also!
Foto vom Aufbau.
Ich will wissen, wo die Kabel hingehen.
Der Mega hat HardwareSerial - das bauen wir schön zusammen...
Ja..
Siehst, Du hast doch das DaBla schon in der Hand gehabt.
Weisst, wär ja schön gewesen, das schon im ersten Post gesehen zu haben und nicht erst selbst zu suchen...
Da steht auch drin, was der gute benötigt.
Seite 11 Figure 2-7 und 2-8
Versorge das Teil aus einem 5V Netzteil.
Du versuchst grad dem MEGA was zu entlocken,
was nicht geht.
Für die Nachwelt und ohne DaBla:
Item Unit Min Typical Max Comments
Scanner system voltage Volt (V) 4.9 5 5.5 If the voltage exceeds the max value, it may damage the core.
Scanner system voltage ripple Millivolt(mV) 20 50 High ripple may cause the core working failure.
Scanner system start current Milliampere (mA) TBD 500 600 Underpower may cause the startup failure.
Scanner system current Milliampere (mA) TBD 80 100 Sleep mode, 5V input
TBD 300 350 Work mode, 5V input
Motor system voltage Volt (V) 5 5 9 Adjust voltage according to speed
Motor system current Milliampere (mA) TBD 100 TBD 5V input
Wie sollte ich den dann betreiben?
Ich will ja den Motor mit dem PWM kontrollieren?
V1:
Elektronik UND Antrieb mit einem 5V 1A speisen.
GND und die Seriellen Pins und den PWM => 4 Leitungen mit dem Arduino verbinden.
Das PWM hat als Bezugspotential GND. Das funktioniert Millionenfach.
V2:
Motor mit 9V Netzteil -> Leistung laut Datenblatt und die Steuerschaltung mit einem 5V mindestens 600mA Netzteil.
Rest wie vor.
Auf dem PWM-Anschluß?
Also soll ich an den Mega das Netzteil anschließen mit 5V ?
Also wenn ich jetzt den Mega Flashe leuchtet ne grüne LED kurz beim RPLidar, doch drehen tut der sich immernoch nich. Auch im Seriellen Minitor kommtn nur "?P" bei 115200
Falsch....
vergleiche wo Dein RX,TX hingeht/herkommt mit dem anderen Thread
Nein.
Die Versorgung des Sensors ist mit dem Netzteil zu machen.
5V_MOTO und VCC_5V werden +5V vom Netztzeil.
GND_MOTO und GND werden -vom Netzteil.
Dann wird GND mit dem GND vom Mega verbunden.
Dann TX/RX richtig mit dem Mega verbinden und CTRL_MOTO mit dem MEGA verbinden.
Naja habe ich gemacht, auch RX / TX richtig angeschlossen... Das Netzteil auch, der Lidar zieht 0.2A bzw. ca 1W. drehen tut er sich immernoch nicht...
Ich benutze den Main Serial, d.h. "Serial" im Code stimmt?
also danke für nichts
Hallo scxry,
ich beschäftige mich gerade mit RPLIDAR A2M8 und habe ähnliche Probleme. Ich habe es zumindest zum rotieren bringen können. Ich glaube, dass im Programm nicht die Bedingung für die If{} erfüllt wird. Du kannst ihn zur Rotation bringen, wenn du ausschließlich das PWM-Signal bedienst. VCC also an einer externen Spannungsversorgung, TX/RX/GND wie bereits aufgeführt und MOTOCTRL an den PWM-Ausgang des Arduinos. Folgender Code sollte funktionieren:
int MOTOCTLpin = 9; // PWM auf Digitalpin 9 verbunden
void setup() {
pinMode(MOTOCTLpin, OUTPUT); // Setzt den Pin als output.
}
void loop() {
analogWrite(MOTOCTLpin, 210); // analogWrite: Werte von 0 bis 255 (!Achtung: Anlaufschwierigkeiten bei Werte über 210)
}
Es wäre hilfreich, wenn du mir deine Fortschritte mitteilen könntest.
Vielen Dank im Voraus.