Řízení modelářských serv pomocí Raspberry Pi Pico je velmi jednoduché. Používá se k tomu pulsně šířková modulace ( psal jsem o tom tady ). Podle velikosti zaplnění PWM se servo natočí do příslušné polohy (příslušný úhel). Dají se připojit přímo na pin Pica bez převodníku. Napájení stačí 3.3V. Jak se taková serva programují podrobněji se dozvíte zde.

Modelářské servo EMAX ES08A

IMG 20250820 233151

Červený vodič je 3.3V, černý vodič je zem a žlutý vodič je řídící, zde připojen na GPIO15.

Při úvahách, které servo použít ve vašem projektu, mějte na paměti to, že toto servo je určené pro ovládání hraček. Umí vyvinout sílu jenom 9g (0.09 N). Mechanicky je velmi jemné, má umělohmotné převody, takže se při hrubším zacházení snadno poláme.

Program

Knihovnu pro ovládání těchto serv naprogramoval pan Markus Hintersteiner a nachází se na Githubu v repozitáři pico-servo.

Sestavení příkladu
git clone https://github.com/markushi/pico-servo[pico-servo]
mkdir build
cd build
cmake ..
make -j4

Knihovna se používá takto:

#include "pico/stdlib.h"
#include "hardware.pwm.h"

#define SERVO_PIN 15
...
servo_enable( SERVO_PIN );
...
// nastavení úhlu od 0˚ do 180˚
servo_set_position( SERVO_PIN, uhel );
CMakelists.txt
cmake_minimum_required(VERSION 3.12)

include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)

project(servo_example)

pico_sdk_init()

add_executable(servo_example
    src/pico_servo.c
    src/pico_servo.h
    example.c
)

pico_add_extra_outputs(servo_example)

target_link_libraries(servo_example pico_stdlib hardware_pwm)

pico_enable_stdio_usb(servo_example 1)
pico_enable_stdio_uart(servo_example 0)

Zdroje a odkazy