robot arm

Поделиться
HTML-код
  • Опубликовано: 8 фев 2024
  • • How to Build a 3D Prin...

Комментарии • 23

  • @mr.q1880
    @mr.q1880 3 месяца назад +3

    hello, Did you make any improvements compared to the RUclips tutorial? I see your Robot works very well. If I use 3D files on RUclips, will it be as good as your robot?
    -can you please provide more details about those 3 gears used, like diameter size, number of teeth and hole size., if you print it yourself can you share the 3d printing file Is that Okay ?
    - What 4 types of servo motors are there (180 degrees or 270 degrees or 360 degrees)?
    Thanks a lot 🥰🥰🥰🥰🥰

    • @esp-el4do
      @esp-el4do  3 месяца назад

      No improvements, just that I used esp32 instead of Arduino, and I asked Chet gpt how to smooth the ADC to reduce fluctuations in the value of the potentiometer. The gear was made using the GF GEAR GENERATOR from Fusion 360. It probably made the same gear ratio as the producer suggested, but I don't remember it very well. I looked up the gear file I created, but I couldn't find it. Instead, I'll write down the link to the picture of the gear. Sorry for not being helpful. I'm more foolish than I thought
      drive.google.com/file/d/1CbgmspCT43WojeAv_6dsY9LjwRB5jNNt/view?usp=drive_link

    • @esp-el4do
      @esp-el4do  3 месяца назад

      All servos are using 180 degrees

    • @mr.q1880
      @mr.q1880 3 месяца назад

      @@esp-el4do Really thank you very much. I have started printing the parts and will finish in 40 hours.
      I have 1 more question:
      -I think what range should the potentiometer be in before inserting and closing the controller and before loading the program. do i have to have potentiometer at a particular position when attaching to the controller body?
      Can you tell me how to position the potentiometer when assembling?
      Thanks a lot

    • @esp-el4do
      @esp-el4do  3 месяца назад

      @@mr.q1880 This is the code I used
      It also includes setting minimum and maximum values for servos and potentiometers
      The code is not perfect, it's sloppy, but it works for me
      I'm not sure anyone else will work the same way I do
      When I first started making this project, I had the same concerns as you
      I started without understanding anything software or mechanical
      I've tried a lot to make it work, and I've been helped by Chetgpt in a lot of ways. I still don't understand how it works, but it works anyway
      drive.google.com/file/d/1ZcvgJ7b0P2AW8uCqIkWPjav0n1Ghxp5B/view?usp=drive_link

    • @mr.q1880
      @mr.q1880 3 месяца назад

      @@esp-el4do Can you open access to the 2 google drive links you just sent me?

  • @nickolastd21
    @nickolastd21 4 месяца назад +1

    love it, reminds me of the remote handling arms for nuclear fuel.
    must be lots or uses like hand controlled manipulator for an rov.

    • @esp-el4do
      @esp-el4do  4 месяца назад

      I'm so sorry. This is not a project that I created. I just copied it. The project that Build Some Stuff created is posted here at www.thingiverse.com/thing:6313449

  • @dsaamnetwork7628
    @dsaamnetwork7628 4 месяца назад +1

    Genial proyecto.

    • @esp-el4do
      @esp-el4do  4 месяца назад +1

      I'm so sorry. This is not a project that I created. I just copied it. The project that Build Some Stuff created is posted here at www.thingiverse.com/thing:6313449

  • @santoshkumar-ul6vz
    @santoshkumar-ul6vz 3 месяца назад +1

    Hii, I need help with the inverse kinematic solution to your robotic arm, can you help me with that

    • @esp-el4do
      @esp-el4do  3 месяца назад

      I just copied the project. I don't have the knowledge

  • @davidavery3182
    @davidavery3182 3 месяца назад +1

    What arm project is this?

    • @esp-el4do
      @esp-el4do  3 месяца назад +1

      www.thingiverse.com/thing:6313449
      ruclips.net/video/AIsVlgopqJc/видео.html
      The producer made it well, so it's easy to copy it. Try it

    • @davidavery3182
      @davidavery3182 3 месяца назад

      @@esp-el4do great, thank you!

  • @ElySeL
    @ElySeL 4 месяца назад +1

    저는 설명대로 하니까 모터가 덜덜 떨리던데 어떻게 해결하신거에요?

    • @esp-el4do
      @esp-el4do  4 месяца назад

      아.. 이게... 저도 잘 모르지만은...
      내부 ADC가 좀 부정확하다고 하더라구요 (외부 ADC 모듈로 하면 낫다고 하는데 저는 안해봤어요)
      포텐셔미터에 공급되는 DC전원의 노이즈도 영향이 있더라구요 ( ESP에 바로 공급하는것보다 확장 쉴드를 통해 공급하는게 ADC값이 덜 튀었어요..)
      챗GPT에 ADC값 스무딩해줘 평활화 해줘 하면 코드 짜줄꺼에요 복붙하시면 되요 (ADC 평균값을 내는 방식이라 조금 딜레이가 생겨요 그래도 이게 제일 효과 좋았어요)

    • @ElySeL
      @ElySeL 4 месяца назад

      const int numReadings = 10; // 스무딩을 위한 읽기 수
      int readings[numReadings]; // 읽기 값을 저장하는 배열
      int readIndex = 0; // 다음 읽기 위치
      int total = 0; // 읽기 값의 총 합
      void setup() {
      // 이전 설정 유지
      }
      void loop() {
      // 이전 루프 유지

      moveMotorSmoothed(potWrist, wrist);
      moveMotorSmoothed(potElbow, elbow);
      moveMotorSmoothed(potShoulder, shoulder);
      moveMotorSmoothed(potBase, base);
      }
      void moveMotorSmoothed(int controlIn, int motorOut) {
      total -= readings[readIndex]; // 이전 값을 총 합에서 제거
      readings[readIndex] = analogRead(controlIn); // 새로운 값을 읽음
      total += readings[readIndex]; // 새 값을 총 합에 추가
      readIndex = (readIndex + 1) % numReadings; // 다음 위치 계산
      // 평균 계산
      int average = total / numReadings;
      // 평균 값을 사용하여 모터 제어
      int pulse_wide = map(average, 800, 240, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
      int pulse_width = int(float(pulse_wide) / 1000000 * FREQUENCY * 4096);
      pwm.setPWM(motorOut, 0, pulse_width);
      }

    • @ElySeL
      @ElySeL 4 месяца назад

      @@esp-el4do 혹시 이거일까요

    • @ElySeL
      @ElySeL 4 месяца назад

      @@esp-el4dopwm 기판 뭐사용하신거에요?

    • @esp-el4do
      @esp-el4do  4 месяца назад

      void setup()
      {
      Serial.begin(115200);
      delay(10);

      analogReadResolution(10);
      pinMode(switchPin, INPUT_PULLUP);
      // initialize all the readings to 0
      for (int thisReading = 0; thisReading < numReadings; thisReading++) {
      readingsWrist[thisReading] = 0;
      readingsElbow[thisReading] = 0;
      readingsShoulder[thisReading] = 0;
      readingsBase[thisReading] = 0;
      }
      // Connect to Wi-Fi network
      Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);

      WiFi.begin(ssid, password);

      while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
      }
      Serial.println("");
      Serial.println("WiFi connected");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
      webSocket.begin();
      }
      void loop()
      {
      webSocket.loop();

      // subtract the last reading:
      totalWrist = totalWrist - readingsWrist[readIndex];
      totalElbow = totalElbow - readingsElbow[readIndex];
      totalShoulder = totalShoulder - readingsShoulder[readIndex];
      totalBase = totalBase - readingsBase[readIndex];
      // read from the sensor:
      readingsWrist[readIndex] = analogRead(potWrist);
      readingsElbow[readIndex] = analogRead(potElbow);
      readingsShoulder[readIndex] = analogRead(potShoulder);
      readingsBase[readIndex] = analogRead(potBase);
      // add the reading to the total:
      totalWrist = totalWrist + readingsWrist[readIndex];
      totalElbow = totalElbow + readingsElbow[readIndex];
      totalShoulder = totalShoulder + readingsShoulder[readIndex];
      totalBase = totalBase + readingsBase[readIndex];
      // advance to the next position in the array:
      readIndex = readIndex + 1;
      // if we're at the end of the array...
      if (readIndex >= numReadings) {
      // ...wrap around to the beginning:
      readIndex = 0;
      }
      // calculate the average:
      int averageWrist = totalWrist / numReadings;
      int averageElbow = totalElbow / numReadings;
      int averageShoulder = totalShoulder / numReadings;
      int averageBase = totalBase / numReadings;
      int switchVal = digitalRead(switchPin);
      String message = String(averageWrist) + "," + String(averageElbow) + "," + String(averageShoulder) + "," + String(averageBase) + "," + String(switchVal);
      webSocket.broadcastTXT(message);
      Serial.println(switchVal);

      delay(20);
      }
      저는 이렇게 짜주더라구요@@ElySeL