How to limit custom post category

Use array_slice and get the first 5 elements of the array:

<?php
    $term_id =182;
    $taxonomy_name="geram_category";
    $term_children = get_term_children( $term_id, $taxonomy_name );
    $term_children = array_slice( $term_children, 0, 5, true );

    foreach ( $term_children as $child ) {
        $term = get_term_by( 'id', $child, $taxonomy_name);
        echo '<li><a href="' . get_term_link( $child, $taxonomy_name ) . '">' . $term->name . '</a></li>';
   }
?>

If you want to get only the first 5 children terms that have posts you could filter the array by using a WP_query for each term to check if it has any posts for that term:

<?php
    $term_id =182;
    $taxonomy_name="geram_category";
    $term_children = get_term_children( $term_id, $taxonomy_name );

    $term_children = array_filter( $term_children, function( $term_id ) {
        $args = array(
            'post_type' => 'spanish',
            'posts_per_page' => 1,
            'tax_query' => array(
                array(
                    'taxonomy' => 'geram_category',
                    'field'    => 'term_id',
                    'terms'    => $term_id,
                ),
            ),
        );
        $query = new WP_Query( $args );
        if( $query->found_posts ) {
            return true;
        } else {
            return false;
        }
    });

    $term_children = array_slice( $term_children, 0, 5, true );

    foreach ( $term_children as $child ) {
        $term = get_term_by( 'id', $child, $taxonomy_name);
        echo '<li><a href="' . get_term_link( $child, $taxonomy_name ) . '">' . $term->name . '</a></li>';
   }
?>